Android按钮事件响应顺序

来源:互联网 发布:warframe离线数据模块 编辑:程序博客网 时间:2024/05/18 03:31

Android按钮事件响应顺序

在一个按钮响应用户的动作时,有一定的顺序,而且, 同事绑定view和button的点击事件,button子类的点击事件会覆盖父类view的响应事件。
下面是一个例子:
package xueyou.xueyoucto.com.androidviews;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private final String Tag = "MAINACTIVITY";    public View view;    public Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        view = this.findViewById(R.id.mainRelativeLayout);        view.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "click me", Toast.LENGTH_SHORT).show();            }        });        button = (Button)this.findViewById(R.id.button);        //这样是先执行OnTouch再执行OnClick事件        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "按钮被单击", Toast.LENGTH_SHORT).show();            }        });        button.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                Toast.makeText(MainActivity.this, "按钮被触摸", Toast.LENGTH_SHORT).show();                return false;            }        });    }}

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="xueyou.xueyoucto.com.androidviews.MainActivity"    android:id="@+id/mainRelativeLayout">    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button"        android:id="@+id/button"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:layout_marginLeft="78dp"        android:layout_marginStart="78dp"        android:layout_marginTop="110dp" /></RelativeLayout>

运行结果:
点击按钮是,先弹出OnTouch事件,在进行Onclick事件,不会响应view的onclick事件。
单独点击view 的时候,会响应view的onClick事件。

0 0
原创粉丝点击