按下时Android按钮不会改变

时间:2015-04-02 22:46:52

标签: android image button background selector

我点击按钮时没有问题,它没有改变背景图像

这是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);
        }
    });

1 个答案:

答案 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>