gpt4 book ai didi

android - 使用选择器和 isEnabled() 禁用 ListView 项

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:05 25 4
gpt4 key购买 nike

范围:- 使用覆盖的 ArrayAdapter;- 使用选择器;- 使用 isEnabled 来禁用项目。

目标:- 禁用一些列表项并通过选择器加载禁用状态 View 。

问题:- 一切正常(自定义 View 、未聚焦、聚焦和按下状态的选择器)但禁用的项目不使用禁用状态的选择器。

调查:当我使用 isEnabled 禁用 ListView 层次结构查看器中的某些项目时,显示禁用的项目无法聚焦、不可点击但(!)已启用。

错误还是遗漏了什么?

附言实际上,文档说 isEnabled 不会为列表项执行 setEnabled(false),它使它成为一个分隔符(?)对象。P.P.S 我还尝试使用 if 语句将我的 View (在 getView 中)设置为 isEnabled(false)。但它仅适用于重点项目?

我的选择器看起来像:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Disabled -->
<item
android:state_enabled="false"
android:textColor="@color/greyDark"
android:drawable="@drawable/list_item_disabled" />
<!-- Pressed -->
<item
android:state_enabled="true"
android:state_pressed="true"
android:textColor="@android:color/white"
android:drawable="@drawable/list_item_pressed" />
<!-- Focused -->
<item
android:state_enabled="true"
android:state_focused="true"
android:textColor="@android:color/white"
android:drawable="@drawable/list_item_focused" />
<!-- Default -->
<item
android:state_enabled="true"
android:drawable="@drawable/list_item_unfocused" />
</selector>

最佳答案

适配器中的函数 isEnabled() 仅使项目无法聚焦和无法点击。您需要在 adapter.getView() 结束时调用 view.setEnabled() 以使您的选择器起作用。

此外,为了让父 View 将启用状态传递给它的后代,您需要在 xml 文件中为 subview 指定属性 android:duplicateParentState="true"

关于android - 使用选择器和 isEnabled() 禁用 ListView 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6744863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com