0

当用户按下按钮时,我在按钮上添加蓝色时遇到了一些问题。如果此按钮在背景中没有可绘制对象,则它可以工作,但在我的情况下,我必须添加自定义背景,并且当用户单击按钮时我想要蓝色。这是我的代码

<Button
    android:id="@+id/create_profile"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/info_account"
    android:layout_centerHorizontal="true"
    android:background="@drawable/btn_create_profile" />
4

2 回答 2

1

蓝色不是平台为您绘制的东西。标准按钮有一个可绘制的选择器作为背景,其中包含一组视图图像。因此,例如按钮,它是标准按钮图像、按下按钮图像(上面绘制蓝色覆盖)、禁用(半透明)等。按钮知道它的当前状态并显示适当的图像。

因此,您要做的是自己绘制一个按下的按钮并创建一个可绘制的选择器,如下所示:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item  android:state_pressed="true" android:drawable="@drawable/your_pressed_button/>
    <item  android:drawable="@drawable/your_normal_button/>

</selector>

我相信关于Drawable Resources的内容值得一读。您还可以在此处找到生成的按钮状态示例。

于 2013-05-14T12:53:10.210 回答
0

您应该使自定义可绘制:

为此,您只需在可绘制文件夹中创建一个 xml 文件并写入:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

  <item  android:state_pressed="false"
       android:drawable="@drawable/ic_back" />

  <item android:state_pressed="true"
      android:drawable="@drawable/ic_back_pressed" />

  <item android:state_focused="true"
      android:drawable="@drawable/ic_back_pressed" />

</selector>

现在在按钮的背景中设置这个drawable。

这里,在正常状态的背景 id ic_back 和按下和焦点状态背景是 ic_back_pressed

用于创建纯色可绘制形状(例如,如果您希望纯色背景作为可绘制形状,您可以转到此处..)

于 2013-05-14T12:56:08.290 回答