Android 按钮默认状态

Android Button default state

为什么 Button 的默认行为是 state_activated="false"?

使用这个选择器它永远不会到达最后一行,它停留在第二行:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimary" android:state_enabled="false"/>
<item android:drawable="@color/colorPrimaryDark" android:state_activated="false"/>
<item android:drawable="@color/colorAccent"/>

假设此选择器在按钮和一些作为按钮的布局之间共享,但在布局的情况下,需要 setActivated(false) 来更改背景。

您需要为激活和启用状态添加颜色。 像这样:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorPrimary" android:state_enabled="false"/>
    <item android:drawable="@color/some_color" android:state_enabled="true"/>
    <item android:drawable="@color/colorPrimaryDark" android:state_activated="false"/>
    <item android:drawable="@color/some_color" android:state_activated="true"/>
    <item android:drawable="@color/colorAccent"/>

activated 的默认状态对于所有视图都是 false。理解原因的最简单方法是考虑 ViewPager 上的选项卡的情况。

activated 选项卡代表可见页面 - 同时激活多个选项卡没有意义。

我在 blog post 中提到,activated 对于不了解 Android 所用术语的人来说可以描述为 "selected"。