Android 按钮在按下时没有变化
Android button doesn't change when pressed
我遇到了一个问题,当我点击按钮时它没有改变背景图片
这是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);
}
});
<selector>
元素膨胀为 StateListDrawable
,通过线性搜索一组状态规范,找到最适合给定状态集的可绘制对象。它将 select 第一个 <item>
匹配状态集。
在您的示例中,第一个 <item>
没有指定状态,包括(true
)或排除(false
),因此它匹配所有状态集。因此,搜索将提前结束,第一个 <item>
的可绘制对象将用于所有可能的状态集。
相反,您可以这样订购:
<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>
我遇到了一个问题,当我点击按钮时它没有改变背景图片
这是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);
}
});
<selector>
元素膨胀为 StateListDrawable
,通过线性搜索一组状态规范,找到最适合给定状态集的可绘制对象。它将 select 第一个 <item>
匹配状态集。
在您的示例中,第一个 <item>
没有指定状态,包括(true
)或排除(false
),因此它匹配所有状态集。因此,搜索将提前结束,第一个 <item>
的可绘制对象将用于所有可能的状态集。
相反,您可以这样订购:
<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>