我的屏幕上有一个按钮,我正在使用自己的自定义XML文件来定义此按钮的外观。
我遇到的问题是,当按下此按钮时,通常不会显示处于按下状态的按钮的效果。
我的XML文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners
android:bottomLeftRadius="7dp"
android:bottomRightRadius="7dp"
android:radius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"
/>
<solid
android:color="@color/PaleGoldenrod"/>
</shape>
我对此并不熟悉,谷歌没有得出结果,因为我的问题可能含糊不清,或者我说的很差。
答案 0 :(得分:2)
您需要使用颜色状态列表XML资源定义按下状态。请参阅http://developer.android.com/guide/topics/resources/color-list-resource.html。
您需要创建选择器资源作为按钮的背景,然后为每个状态定义不同的形状XML。
非常简单的版本:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/button_shape_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/button_shape_normal" />
</selector>
button_shape_normal.xml (这是你的形状可绘制)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners
android:bottomLeftRadius="7dp"
android:bottomRightRadius="7dp"
android:radius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"
/>
<solid
android:color="@color/PaleGoldenrod"/>
</shape>
button_shape_pressed.xml (这是您按下的状态)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners
android:bottomLeftRadius="7dp"
android:bottomRightRadius="7dp"
android:radius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"
/>
<solid
android:color="@color/PressedColor"/>
</shape>
您可能想要更改按下状态按钮的形状,或者其他任何内容。关键是你可以完全自定义你的按下状态,但你必须为它创建一个新的xml文件。