LinearLayout setOnClickListener不起作用

时间:2017-04-07 12:12:02

标签: android android-layout listview

作为初学者,我正在尝试为LinearLayout设置click事件,这是ListView的父布局。似乎ListView拦截了LinearLayout事件。

这是我的主要布局:

<LinearLayout 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:orientation="vertical"
android:id="@+id/ll"
android:clickable="true"
tools:context=".MainActivity" >
<ListView
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:transcriptMode="alwaysScroll"
    android:divider="@null"
    android:listSelector="@android:color/transparent"
    />
</LinearLayout>

我使用此代码但不起作用。

findViewById(R.id.ll).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("MainActivity", "click");
        }
    });

2 个答案:

答案 0 :(得分:1)

是的,你是对的,ListView处理点击。你有两个选择。

  1. 创建LinearLayout的子类,侦听触摸事件,并在需要时拦截它们。

  2. 而不是LinearLayout使用FrameLayout并在match_parent之后声明高度/宽度ListView的视图,并在该视图上设置点击侦听器。

    <FrameLayout>
        <ListView />
        <View 
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </FrameLayout>
    

答案 1 :(得分:-2)

因为你有ListView。 ListView正在获得点击。 如果要单击listView项,请使用

listView.setOnItemClickListener
相关问题