如何在列表视图的任何位置检测点击

时间:2019-05-18 12:14:59

标签: android

我希望每次单击屏幕时都执行一个操作。相对布局中有一个列表视图。当我将setOnCLickListener单独设置为相对布局时,当其中没有listview时,它正在工作,但其中没有listview。仅当我每次单击屏幕时,列表视图中的项目才会显示。我尝试了setItemOnClickListener。那也不起作用。

android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
android:clickable="true"
android:orientation="vertical" >

<RelativeLayout

    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical"
    android:padding="20dp"
    android:background="@drawable/bg">

    <ListView
        android:id="@+id/list_msg"


        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="false"
        android:layout_alignParentTop="false"
        android:layout_below="@+id/meLbl"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="10dp"
        android:listSelector="@android:color/black"
        android:transcriptMode="alwaysScroll"
        android:divider="@null" />

    <TextView
        android:id="@+id/meLbl"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:text="Amanda"
        android:textColor="@color/white"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/friendLabel"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="Janet"
        android:textColor="@color/white"
        android:textSize="20dp" />



</RelativeLayout>

单击仅在屏幕上的两个文本视图上起作用。 我希望点击在屏幕上起作用

1 个答案:

答案 0 :(得分:0)

查找在屏幕上单击的内容:

getWindow().getDecorView().setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    Toast.makeText(SecondActivity.this, "click on screen ", Toast.LENGTH_SHORT).show();

                }
                return false;
            }
        });

并查找单击listView的结果:

 listView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Toast.makeText(SecondActivity.this, "Clicked On ListView", Toast.LENGTH_LONG).show();
                return false;
            }
        });