我遇到以下问题。我想为tabbuton禁用状态添加特殊图像,但它不起作用。这是我在选择器中所做的。如何使用xml优化Tabwidget按钮的禁用状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/active" android:state_pressed="true"/>
<item android:drawable="@drawable/unactive" android:state_selected=true"/>
<item android:drawable="@drawable/disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/unactive"/>
</selector>
这是完全一样选择了一个“独立”按钮,但它不工作,它显示禁用状态,即使启用按钮时。我究竟做错了什么?
编辑:感谢@NightCrawler sugestions我发现,这是一个积极的非有效状态的最佳选择,但我还是不能让state_enabled =“假”显示不同势状态时,按钮被禁用...
<item android:drawable="@drawable/active" android:state_selected="true"/>
<item android:drawable="@drawable/unactive" android:state_selected="false"/>
<item android:drawable="@drawable/disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/unactive"/>
解决方法:我继续实施残疾状态码图像切换:
这确实工作正常,但我仍然想知道是否有可能使用ONLY XML为tabwidget中的按钮定义禁用状态。
结果: 所以更多的修补程序后,我发现为什么禁用状态没有注册。在我的情况下,我使用按钮的自定义布局,可能任何定制tabhost的人都会这样做,并且可能会在该布局中显示某种图像。可以用上面定义的状态绘制,然后将其应用于布局中的图像,而不是整个布局。即使这个选择是足有3种想要的状态:
<item android:drawable="@drawable/menu_network_active" android:state_selected="true"/>
<item android:drawable="@drawable/menu_network_offline" android:state_enabled="false"/>
<item android:drawable="@drawable/menu_network_unactive"/>
但是当你关闭,你不得不手动设置您使用的是它的图像为禁用过这样tabwidget按钮:
wrapper.tabWidget.getChildAt(0).setEnabled(false);
icon = (ImageView) wrapper.tabWidget.getChildAt(0).findViewById(R.id.icon);
icon.setEnabled(false);
在在图像上触发该情况禁用的选择器状态并显示期望的背景。
仍然没有解释道:左
唯一在这个谜缺少的是为什么选择tabbutton时被触发图像的选中状态,但不使用的状态。我甚至尝试在“图标”上设置监听器,以查看当您更改选项卡时是否调用了这些监听器,但这并未发生,并且选择器中的静止图像被设置为选中状态。所以基本上选择是在布局中的图像触发(不知何故),但禁用不是,我不知道为什么。 如果有人在看这个问题有一些发现,请添加评论或答案功能参考。 对于那些只是想要解决类似的错误,只是阅读WOKRAROUND或FINDINGS部分,因为这些可能会为您解决它。
嘿,谢谢....它的工作 – Arshu