2013-08-28 46 views
1

我遇到以下问题。我想为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部分,因为这些可能会为您解决它。

+0

嘿,谢谢....它的工作 – Arshu

回答

3
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Non focused states --> 
    <item android:drawable="@drawable/footer" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/> 
    <item android:drawable="@drawable/footer_pressed" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/> 

    <!-- Pressed --> 
    <item android:drawable="@drawable/footer_pressed" android:state_pressed="true" android:state_selected="true"/> 
    <item android:drawable="@drawable/footer_pressed" android:state_pressed="true"/> 

</selector>`enter code here` 
+0

谢谢你的建议,但这不是我想要的。我想要一个标签按钮在启用和禁用时具有不同的图像,因此用户知道他/她可以或不可以点击它。你知道我该怎么做。注意:需要显示3个不同的图像,有效,无效,禁用 – PSIXO

+0

我认为它不可能提及禁用按钮状态的绘图。您可以检查按钮是否被禁用,然后设置适当的图像,如果它不是那么利用选择器.. –

+0

嗯。经过两个小时的尝试之后,我认为你是对的,对一个国家来说这是不可能的。我开始使用你在15分钟前提到的这种方法,它正在工作。但我仍然没有得到相同的选择器如何工作的独立按钮,但不是为tabButton。你知道那是为什么吗? – PSIXO