什么是定义项目的选择器的结构

时间:2016-03-08 12:15:04

标签: android xml

为什么我们在最后一次定义这个项目

  <item android:drawable="@drawable/twitter_im_edittext_normal" />

在像这样的选择器中

   <selector xmlns:android="http://schemas.android.com/apk/res/android">
           <item android:state_window_focused="false" 
                 android:state_enabled="true"
                 android:drawable="@drawable/twitter_im_edittext_normal" />
           <item android:state_window_focused="false" 
                  android:state_enabled="false"
                  android:drawable="@drawable/twitter_im_edittext_normal" />
           <item android:state_pressed="true" 
                 android:drawable="@drawable/twitter_im_edittext_normal" />
           <item android:state_enabled="true" 
                 android:state_focused="true"    
                 android:drawable="@drawable/twitter_im_edittext_focused" />
           <item android:state_enabled="true" 
                 android:drawable="@drawable/twitter_im_edittext_normal" />
           <item android:state_focused="true" 
                 android:drawable="@drawable/twitter_im_edittext_focused" />
           <item android:drawable="@drawable/twitter_im_edittext_normal" />
     </selector>

2 个答案:

答案 0 :(得分:1)

请参阅official documentation

  

在每次状态更改期间,状态列表从上到下遍历,并且使用与当前状态匹配的第一个项目 - 选择不基于“最佳匹配”,而只是满足最低条件的第一个项目国家。

答案 1 :(得分:0)

将选择器视为switch案例。声明按照列出的顺序进行验证,因此最后一个是您的default:子句。如果您的视图与任何条件都不匹配,则默认为

<item android:drawable="@drawable/twitter_im_edittext_normal" />