我有问题。我不知道如何根据状态更改按钮的外观。
xml中的标准外观不起作用,默认也不起作用。
{
button1 = (Button) findViewById(R.id.button5);
button1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
mp[0] = loadSample(1);
mp[0].start();
break;
case MotionEvent.ACTION_UP:
mp[0].stop();
//mp.reset();
mp[0].release();
break;
}
return true;
}
});
}
答案 0 :(得分:1)
听起来您正在寻找带有图像选择器的ImageButton
。这允许您为给定按钮定义pressed
,focused
和normal
状态。
示例直接来自ImageButton
API页面。一旦实现如下,Android将根据您定义的选择器自动选择适合按钮当前状态的图像。
http://developer.android.com/reference/android/widget/ImageButton.html
作为drawable
文件夹中的XML:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
答案 1 :(得分:0)
你在XML中做过这样的事吗?
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/myButtonYellow"
android:state_pressed="true" />
<item android:drawable="@drawable/myButtonNotYellow" />
</selector>
android:state_pressed =&#34; true&#34; line会将其设置为根据其按下状态而变化。可以找到完整的州名单here
myButton定义为:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:radius="4dp" />
<solid android:color="@color/yellow" />
<padding
android:bottom="7dp"
android:left="12dp"
android:right="12dp"
android:top="7dp" />
<stroke
android:width="1dp"
android:color="@color/white" />
</shape>