2013-08-28 43 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