印刷机上的视图:按下时更改背景颜色?如何显示正在按下视图?

Ted*_*Ted 8 android

暂时,我有一个自定义视图,其中9个补丁图像作为边框.

该自定义视图在LinearLayout中放置了三次,因此它看起来像这样:

+------------------------+
|  CustomView            |
+------------------------+
|  CustomView            |
+------------------------+
|  CustomView            |
+------------------------+
Run Code Online (Sandbox Code Playgroud)

我已将一个click事件监听器附加到View,因此它是可单击的.但后来我点击它,我无法看到我点击它 - 颜色没有变化.

所以,我认为我会附加一个"onPress"监听器,然后改变视图的背景,但我找不到这样的监听器.

所以,问题是 - 如何在View上创建行为,以便我可以看到它被按下了?这通常在Android中完成,带有绿色背景,表示现在正在按下它.

问候

Cas*_*eyB 20

您可以为视图设置OnClickListener.单击视图时将调用该方法.但是对于像单击视图时更改背景这样简单的事情,您应该使用有状态的drawable.他们这样工作,你制作3 9个补丁图像.

  1. 是你现在拥有的正常背景.
  2. 当用户选择带有track-ball/d-pad的视图时,背景应该是什么样子
  3. 是用户点击它时视图应该是什么样子

然后在drawable文件夹中创建一个新的xml文件.它应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_focused="true"
    android:state_pressed="true"
    android:drawable="@drawable/background_pressed" />
<item
    android:state_focused="true"
    android:state_pressed="false"
    android:drawable="@drawable/background_focused" />
<item
    android:state_focused="false"
    android:state_pressed="true"
    android:drawable="@drawable/background_pressed" />
<item
    android:drawable="@drawable/background_normal" />
Run Code Online (Sandbox Code Playgroud)

然后,当您设置视图的背景时,将其设置为xml文件.