在 android 中禁用根视图的响应
Disable response of root view in android
我有一个有几行的 ListView
。每行由 7 TextViews
组成,它们对 onClick()
事件作出反应。
这一切都很好,但是当用户点击行的边缘时,没有 TextView
捕捉到 onClick()
事件,root view - LinearLayout
- 得到突出显示。
这当然是正常行为,但由于单击此处没有任何反应,我不想突出显示线性布局。
有什么方法可以禁用此行为但继续捕获 onClick() 事件 TextView
s?
(onClick 侦听器在适配器 getView() 方法中设置)
这里是 xml 文件的一些摘录。正如大家所看到的,我已经尝试了一些方法,但它们不起作用。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:longClickable="false"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false">
<TextView
android:id="@+id/listelement_weekoverview_tv_mo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/weeklylist_rndrectangle"
android:gravity="center_horizontal"
android:singleLine="false"
android:textColor="@color/appcolor_red_base" />
...
</LinearLayout>
未点击版本
点击版本
我找到了解决办法。
只需像这样在您的自定义适配器中覆盖 isEnabled (int position)
方法:
@Override
public boolean isEnabled (int position) {
return false;
}
我有一个有几行的 ListView
。每行由 7 TextViews
组成,它们对 onClick()
事件作出反应。
这一切都很好,但是当用户点击行的边缘时,没有 TextView
捕捉到 onClick()
事件,root view - LinearLayout
- 得到突出显示。
这当然是正常行为,但由于单击此处没有任何反应,我不想突出显示线性布局。
有什么方法可以禁用此行为但继续捕获 onClick() 事件 TextView
s?
(onClick 侦听器在适配器 getView() 方法中设置)
这里是 xml 文件的一些摘录。正如大家所看到的,我已经尝试了一些方法,但它们不起作用。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:longClickable="false"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false">
<TextView
android:id="@+id/listelement_weekoverview_tv_mo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="1dp"
android:layout_weight="1"
android:background="@drawable/weeklylist_rndrectangle"
android:gravity="center_horizontal"
android:singleLine="false"
android:textColor="@color/appcolor_red_base" />
...
</LinearLayout>
未点击版本
我找到了解决办法。
只需像这样在您的自定义适配器中覆盖 isEnabled (int position)
方法:
@Override
public boolean isEnabled (int position) {
return false;
}