2012-09-11 65 views
2

我正在用自定義視圖創建一個微調框,無論如何,我設法爲微調框處於不活動狀態時顯示不同的可繪製對象以及按下按鈕時,我希望在下拉列表顯示時保持按下狀態可繪製。這裏是mi XML文件:微調控制器顯示下拉列表時的狀態是什麼?

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/ComboBoxInactive" /> 
    <item android:state_focused="true" 
     android:state_pressed="true" 
     android:drawable="@drawable/ComboBoxActive" /> 
    <item android:state_focused="false" 
     android:state_pressed="true" 
    android:drawable="@drawable/ComboBoxActive" /> 
    <item android:drawable="@drawable/ComboBoxInactive" /> 
</selector> 

我應該添加什麼狀態,當它顯示下拉菜單?我希望它顯示ComboBoxActive drawable。我已經嘗試加入:

<item android:state_enabled ="false" 
     android:drawable="@drawable/ComboBoxActive"/> 

任何想法是什麼狀態?

回答

5

沒有android:state_dropdown_showing狀態。微調下拉列表中 唯一的一個狀態state_enabled =「真」

你可以用我選擇來區分下拉列表狀態

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- disabled state --> 
<item android:state_enabled="false" android:drawable="@drawable/spinner_off"/> 
<!-- pressed state --> 
<item android:state_enabled="true" android:state_window_focused="true" android:state_pressed="true" android:drawable="@drawable/spinner_pressed"/> 
<!-- unselected state --> 
<item android:state_enabled="true" android:state_window_focused="true" android:drawable="@drawable/spinner_default"/> 
<!-- dropdown list state --> 
<item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/spinner_dropdown_list_is_shown"/> 
<!-- default --> 
<item android:drawable="@drawable/spinner_default"/> 
</selector> 

不要忘記在微調器設置setFocusable和setFocusableInTouchMode性能。

+0

如果添加setFocusable和setFocusableInTouchMode,則必須在微調器上點擊兩次(first = focus,second open下拉菜單)。你有同樣的問題嗎? – DoubleYo

+0

是的,你是對的 –

+0

我找到了一個解決方案:我已附加一個'focusChangeListener'和'performClick'項目點擊 – DoubleYo

0

根據Olef Koshkin的回答,我可以補充一點,如果你想保存改變後的狀態點擊微調後,並返回它默認只有在關閉微調後,你可以使用。這個對我有用。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- disabled state --> 
    <item android:drawable="@drawable/custom_spinner_inactive" 
      android:state_enabled="false"/> 
    <!-- pressed state --> 
    <item android:drawable="@drawable/custom_spinner_inactive" 
      android:state_enabled="true" 
      android:state_pressed="true" 
      android:state_window_focused="true"/> 
    <!-- unselected state --> 
    <item android:drawable="@drawable/custom_spinner_inactive" 
      android:state_enabled="true" 
      android:state_window_focused="true"/> 
    <!-- dropdown list state --> 
    <item android:drawable="@drawable/custom_spinner_inactive" 
      android:state_enabled="true" 
      android:state_focused="true"/> 
    <!-- default --> 
    <item android:drawable="@drawable/custom_spinner_active"/> 
</selector> 

在其他情況下,我看到眨眼的默認狀態,我不喜歡它。