2014-08-28 45 views
0

Android的新手。Android可繪製:state_selected工作,取代state_pressed?

我有以下的在res /定義繪製/在一個菜單按鈕在style.xml定義

<style name="menu_icon"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">@dimen/menu_item_height</item> 
    <item name="android:background">@drawable/menu_item_bg_sel</item> 
</style> 

現在,menu_item_bg_sel在繪製有2個狀態,我感興趣的兩個不同的顏色漸變壓入和選擇。

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
    <layer-list>   
     <item> 
      <shape> 
       <gradient android:angle="180" 
       android:endColor="@color/background_menu_gray_selected2" 
          android:centerColor="@color/background_menu_gray_selected1" 
          android:startColor="@color/background_menu_gray_selected" /> 
      </shape> 
     </item> 
    </layer-list> 
    </item> 
    <item android:state_selected="true"> 
<layer-list>   
     <item> 
      <shape> 
       <gradient android:angle="180" android:endColor="@color/background_menu_home2" 
          android:centerColor="@color/background_menu_home1" 
          android:startColor="@color/background_menu_home" /> 
      </shape> 
     </item> 
    </layer-list> 
    </item> 
<item android:drawable="@color/transparent"/> 

然而,當我按下按鈕(即過渡狀態)按鈕仍創建梯度服用顏色只從selected_state。

我在做什麼錯?有任何想法嗎?

回答

0

state_selected通常用於使用d-pad或筆如三星筆記的導航時使用,所以我建議不要使用state_selected,因爲當您按自動時,它將被選中或獲得焦點,雖然選擇和焦點是種類或不同。我建議使用state_pressed,state_focused和state_hovered。

欲瞭解更多信息請點擊here

0

您可以使用此代碼。您可以將此代碼複製到一個可繪製文件中。您可以爲不同的狀態分配不同的可繪製文件或定義該文件本身的形狀。我已經爲該聚焦狀態分配了一個可繪製文件作爲示例。

simple_button_states.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item 
      android:state_focused="true" 
      android:drawable="@drawable/rounded_edittext_focused" 
      /> 
     <!--pressed --> 
     <item 
      android:state_pressed="true" /> 

     <!--selected --> 
     <item 
      android:state_selected="true" /> 

     <!-- focused --> 
     <item 
      android:drawable="@drawable/rounded_edittext_unfocused"/> 


    </selector> 

round_edittext_focused.xml 



<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <solid android:color="#FFFFFF" /> 

    <stroke 
     android:width="2dp" 
     android:color="@color/CornflowerBlue" /> 
    <corners 
     android:topLeftRadius="4dp" 
     android:topRightRadius="4dp" 
     android:bottomLeftRadius="4dp" 
     android:bottomRightRadius="4dp" 

     /> 
</shape> 

最後分配實際的按鈕,你在上面聲明的繪製文件的背景。

<Button 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 

     android:background="@drawable/simple_button_states" 
     /> 

希望這有助於