我点击按钮时没有问题,它没有改变背景图像
这是btn_states.xml
<item android:drawable="@drawable/btn_normal"/>
<item android:drawable="@drawable/btn_active" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_active" android:state_focused="true"/>
和activity_main.xml
<Button
android:id="@+id/button1"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@drawable/btn_states"
android:text="@string/app_name"
android:textColor="#FFFFFF" />
和MainActivity.class
final Button button1 = (Button) findViewById(R.id.button1);
button1.setBackgroundResource(R.drawable.btn_states);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
AboutActivity.class);
startActivity(intent);
}
});
答案 0 :(得分:1)
<selector>
元素膨胀为StateListDrawable
,通过线性搜索一组状态规范,找到给定状态集最合适的drawable。它将选择与状态集匹配的第一个<item>
。
在您的示例中,第一个<item>
没有指定状态,包括(true
)或独占(false
),因此它匹配所有状态集。因此,搜索将提前结束,第一个<item>
的drawable将用于所有可能的状态集。
相反,您可以这样订购:
<selector>
<item android:state_pressed="true"
android:drawable="@drawable/btn_active" />
<item android:state_focused="true"
android:drawable="@drawable/btn_active" />
<item android:drawable="@drawable/btn_normal" />
</selector>