2014-08-28 46 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" 
     /> 

希望这有助于