首页 > 技术文章 > Android开发——点击事件的处理

danile97 2021-09-01 17:34 原文

控件的点击事件处理有两种方式,在开发中我们常用第二种

<1>方法一:

——在布局文件里的每个控件里加上onClick属性

格式: android:onClick="方法名"

——然后,在对应使用这个布局的Activity上写出对应的方法的实现

public void 方法名(View v){

  点击后要执行的代码;

}

 

例子:

——在布局文件里的控件里加上onClick属性

<TextView
            android:onClick="onCancle"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:background="@drawable/shape_retangle"
            android:text="C"
            android:textSize="30sp"/>

——然后,在对应使用这个布局的Activity上写出对应的方法的实现

public void onCancle(View v){
     //这里传过来的View v就是点击的布局里的对应控件TextView Log.d(TAG,
"cancle be click..."); if(v instanceof TextView){ String vText = ((TextView) v).getText().toString(); Log.d(TAG,"被点击的按键是: " + vText); }

——最终点击之后显示结果为

2021-09-01 08:55:20.486 4591-4591/com.example.uitest D/MainActivity: cancle be click...
2021-09-01 08:55:20.486 4591-4591/com.example.uitest D/MainActivity: 被点击的按键是: C

 

<2>方法二:(比较常用)

——通过id声明的方式来找到控件,然后再对各个控件设置相应的点击事件

——首先,在布局中给控件添加id

<TextView
            android:id="@+id/tv_cheng"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="✖"
            android:background="#e47f26"
            android:textSize="30sp"/>
        <TextView
            android:id="@+id/tv_chu"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="/"
            android:background="#e47f26"
            android:textSize="30sp"/>

 

——然后,在对应的Activity中找到控件,并设置相应的点击事件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.jisuanqi_layout);

        //找控件
        initView();

        //设置点击事件
        initClickEvent();
    }
    private void initView(){
        //Ctrl+Alt+F可以把变量cheng和chu设置为成员变量
        cheng = this.findViewById(R.id.tv_cheng);
        chu = this.findViewById(R.id.tv_chu);
    }
   private void initClickEvent(){

        //第一种设置方式
        cheng.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG,"点击的按键为:" + ((TextView) view).getText().toString());
            }
        });

        //第二种设置方式
        chu.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
     //第二种设置方式重写了系统中的onClick方法
//如果有多个控件设置了点击事件,那么在这里面统一进行处理的时候,需要先判读当前传入的是哪一个控件 if (view == chu){ Log.d(TAG,"当前点击的按键是:"+ ((TextView) view).getText().toString()); }else if(view == cheng){ //... } }

 

推荐阅读