范围:
– 使用overriden ArrayAdapter;
– 使用选择器;
– 使用isEnabled禁用项目.
目标:
– 禁用某些列表项并通过选择器加载禁用状态视图.
问题:
– 一切正常(自定义视图,选择器用于未聚焦,focuesd和按下状态)但禁用的项目不使用选择器用于禁用状态.
调查:当我使用isEnabled禁用listview中的某些项时,层次结构查看器显示禁用的项目不可聚焦,不可点击但启用(!).
这是一个错误或缺少什么?
附:实际上,docs说isEnabled没有为列表项做setEnabled(false),它使它成为一个divider(?)对象.
P.P.S我也尝试使用if语句将我的View(在getView中)设置为isEnabled(false).但它只适用于重点项目?
我的选择器看起来像:
android:state_enabled="false"
android:textColor="@color/greyDark"
android:drawable="@drawable/list_item_disabled" />
android:state_enabled="true"
android:state_pressed="true"
android:textColor="@android:color/white"
android:drawable="@drawable/list_item_pressed" />
android:state_enabled="true"
android:state_focused="true"
android:textColor="@android:color/white"
android:drawable="@drawable/list_item_focused" />
android:state_enabled="true"
android:drawable="@drawable/list_item_unfocused" />
解决方法:
适配器中的函数isEnabled()只使项目不可聚焦且不可点击.
您需要在adapter.getView()的末尾调用view.setEnabled()以使您的选择器正常工作.
此外,对于将启用状态传递给其后代的父视图,您需要为xml文件中的子视图指定属性android:duplicateParentState =“true”.
标签:xml,listview,android-arrayadapter,android
来源: https://codeday.me/bug/20190721/1495619.html