如何使我的按钮在我自己的XML文件中定义的形状看起来是可点击的?

时间:2014-02-18 12:57:14

标签: java android xml button

我的屏幕上有一个按钮,我正在使用自己的自定义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>

我对此并不熟悉,谷歌没有得出结果,因为我的问题可能含糊不清,或者我说的很差。

1 个答案:

答案 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文件。