触摸时更改按钮背景

时间:2011-11-15 06:34:16

标签: java android

我想在不使用OnTouchListener的情况下更改按钮的绿色背景。我有这样的情况:我在一个层中放置一些butons,然后在另一层中放置一层,在另一层中放置最后一层。当我触摸按钮时背景正在改变(我现在正在使用OnTouchListener)但是如果我将手指拖到按钮之外然后将其从屏幕上移开,按钮的背景将保持图像处于触摸时的状态(否则,如果我点击按钮并且按钮关闭按钮,那么背景正在变化)

2 个答案:

答案 0 :(得分:17)

1。为按钮状态准备3张图片,并将其放入resource/drawable文件夹。

2。res/drawable/文件夹中创建一个新的XML文件,无论您想要什么名称,在这种情况下,我们只需命名为my_button.xml。该文件定义了哪个按钮状态属于哪个图像。

现在,您可以通过此ID参考此按钮:@ drawable / my_button。

文件:res / drawable / my_button.xml

使用my_button.xml文件夹中的drawable这样的按钮图像创建xml文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/button_pressed_yellow"
      android:state_pressed="true" />
  <item android:drawable="@drawable/button_focused_orange"
      android:state_focused="true" />
<item android:drawable="@drawable/button_normal_green" />
</selector>

添加一个普通按钮,并通过

将背景图像附加到“my_button”上方
android:background:@drawable/my_button

答案 1 :(得分:0)

选择器如下

<?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/btn_pressed" /> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@drawable/btn_focused" /> <!-- focused -->
    <item android:drawable="@drawable/btn_default" /> <!-- default -->
</selector>