-2

我有个问题。我不知道如何根据其状态更改按钮的外观。 

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;
        }
    });
}
4

2 回答 2

1

听起来您正在寻找ImageButton带有图像选择器的选择器。这允许您为给定按钮定义pressedfocusednormal状态。

示例直接来自ImageButtonAPI 页面。一旦实现如下,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>
于 2012-12-11T00:13:02.737 回答
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="true" 行将对其进行设置,使其根据其按下状态而变化。可以找到完整的状态列表此处找到完整的州列表

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>
于 2012-12-11T00:13:31.660 回答