资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

android点击事件,android点击事件分发

【Android】记一次点击事件失效排查

事情很简单,一个返回按钮设置了点击事件,但是无论如何都触发不了。

创新互联专注于椒江网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供椒江营销型网站建设,椒江网站制作、椒江网页设计、椒江网站官网定制、微信小程序开发服务,打造椒江网络公司原创品牌,更为您提供椒江网站排名全网营销落地服务。

布局也很简单,就是一个 LinearLayout 中,包含一个 TitleBar 和一个 RecyclerView:

首先排除了一些小白错误,确定了点击事件确实绑定上了,但是却无法点击。

在网上搜索时,看到有人说到一种情况,就是按钮被上面的控件覆盖了,导致点击事件没有传递过来。

但是,这个界面很简单啊,不可能存在被覆盖的情况吧?

虽然感觉问题不大,但是还是点开了 Layout Inspector 查看了实时布局。

不看不知道,一看吓一跳:

原来他是一个透明的 ActionBar?这也太坑了吧!

找到问题就好解决了,直接隐藏了系统的 ActionBar 即可。

Android中点击事件功能实现示例

第一种点击事件

在xml中设置onclick属性

android:onClick="myOnclick"

第二种;获取Button然后一个一个单独绑定点击事件

"

xmlns:tools=" "

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" 

android:id="@+id/btn_imgBtn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="myOnclick"

android:text="imageButton"

/

android:id="@+id/btn_imgView"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="myOnclick"

android:text="imageView"

/

public class MainActivity extends ActionBarActivity {

private Button btnImageBtn;

private Button btnImageView;

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    btnImageBtn = (Button) findViewById(R.id.btn_imgBtn);

    btnImageView =  (Button) findViewById(R.id.btn_imgView);

btnImageBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "点击ImageButton", Toast.LENGTH_SHORT).show();

}

});

    btnImageView.setOnClickListener(new MyListener());

}

第三种:写一个类(MyListener)实现OnClickListener接口,然后Button在设置onclickListener的时候new一个MyListener

btnImageView.setOnClickListener(new MyListener());

class MyListener implements OnClickListener{

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.btn_imgBtn:

Toast.makeText(MainActivity.this, "点击ImageButton", Toast.LENGTH_SHORT).show();

break;

     case R.id.btn_imgView:

      Toast.makeText(MainActivity.this, "点击imageView", Toast.LENGTH_SHORT).show();

break;

第四种:整个类(MianActivity)实现onclickListener的接口

跳转界面

Intent:意图,用于访问android中的组件

用Intent跳转界面(activity)

第一步:new一个Intent()

Intent intent1 = new Intent(MainActivity.this,ImageButtonActivity.class);

startActivity(intent1);

public void myOnclick(View view){

 switch (view.getId()) {

case R.id.btn_imgBtn:

Intent intent1 = new Intent(MainActivity.this,ImageButtonActivity.class);

startActivity(intent1);

break;

    case R.id.btn_imgView:

     Intent intent2 = new Intent(MainActivity.this,ImageViewActivity.class);

startActivity(intent2);

break;

Intent intent = new Intent(当前的activity,跳转到的acticvity.class);

startActivity(intent);

3.ImageView

展示方式:scaleType:

4.ImageButton:

触摸事件:当控件或者屏幕呗触摸的时候,产生的反应

public boolean onTouchEvent(MotionEvent event) {

imageButton:现在已经呗button代替,用于展示图片的按钮。不能显示文字。

imageView

scaleType:图片展示的方式

fitStart:展示在控件的上方

fitCenter:展示在控件的中间

fitEnd;展示在控件的下方

fitXY:不按照比例拉伸

matrix:矩阵模式

matrix可以设置图片旋转,缩放。移动

获取图片的高度和宽度

int h = imgView.getDrawable().getIntrinsicHeight();

int w = imgView.getDrawable().getIntrinsicWidth();

Matrix m = new Matrix();

m.postRotate(45);

m.postRotate(45, w/2, h/2);

imgView.setImageMatrix(m);

移动事件:

按下:MotionEvent.ACTION_DOWN

抬起:MotionEvent.ACTION_UP

移动:MotionEvent.ACTION_MOVE

获取当前的移动事件,

event.getAction()

"

xmlns:tools=" "

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/img_01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/ss"

android:scaleType="fitXY"/

android:id="@+id/img_02"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/gl"

android:visibility="gone"

android:scaleType="fitXY"/

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/bird"

android:layout_gravity="center"

/

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="20sp"

android:textColor="#ff0000"

android:gravity="center"

android:text="小鸟飞"/

public class MainActivity extends Activity {

private ImageView img01;

private ImageView img02;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

img01 = (ImageView) findViewById(R.id.img_01);

img02 = (ImageView) findViewById(R.id.img_02);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

//System.out.println("被摸了");

if(event.getAction()==MotionEvent.ACTION_UP){

Log.v("TAG", "被抬起来");

if(img01.getVisibility()==View.VISIBLE){

img01.setVisibility(View.GONE);

img02.setVisibility(View.VISIBLE);

}else{

img01.setVisibility(View.VISIBLE);

img02.setVisibility(View.GONE);

}

}else if(event.getAction()==MotionEvent.ACTION_DOWN){

Log.v("TAG", "被按下了");

}else if(event.getAction()==MotionEvent.ACTION_MOVE){

Log.v("TAG", "移动了");

}

return super.onTouchEvent(event);

}

android怎么设置按钮点击事件

通过setOnClickListener()来绑定单击事件 例如:Button button = (Button) findViewById(R.id.button_id); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Perform action on click //增加自己的代码...... 例如下面的 final TextView text = (TextView) findViewById(R.id.textView1); text.setText("OnClick. " + " ...."); } });

Android RecyclerView点击事件处理

Android新引入的RecyclerView用来代替ListView,但是RecyclerView处理点击和长按事件却没有ListView方便

RecyclerView并没有onClickListener和onLongClickListener方法

这样我们就需要在Adapter中创建一个接口

同时在adapter中创建该接口属性

然后在adapter implements OnClickListener,View.OnLongClickListener,在方法onCreateViewHolder中,

在方法onBindViewHolder中,设置

特别注意:这里胡itemView即接受点击事件的view,并不需要在ViewHolder中显式地初始化,当ViewHolder实例化之后,itemView也就自动实例化了。

这样我们在adapter实现的onClick和onLongClick方法中,就可以

最后,在activity中实现接口OnRecyclerViewItemClickListener

即可实现点击事件


分享文章:android点击事件,android点击事件分发
转载源于:http://cdkjz.cn/article/dsggjdj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220