作为初学者,我正在尝试为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");
}
});
答案 0 :(得分:1)
是的,你是对的,ListView
处理点击。你有两个选择。
创建LinearLayout
的子类,侦听触摸事件,并在需要时拦截它们。
而不是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