按下 Android 自定义键盘更改背景颜色键

use*_*230 5 keyboard android key pressed background-color

我遇到了一个问题,直到现在还找不到解决方案!我已经实现了一个带有多个键的自定义键盘。每个键都有一个背景图像。我想更改按键本身的背景颜色,如下面的原始键盘所示:

在此处输入图片说明

我不想预览,我想在按下键时更改键本身的背景颜色。这是我的文件:

键盘文件

<?xml version="1.0" encoding="UTF-8"?>
<android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:keyPreviewOffset="10dp"
android:keyPreviewLayout ="@layout/preview"
android:keyTextColor="@color/colorAccent"
android:keyBackground="@drawable/keybackground"
android:background="#881f2023"
/>
Run Code Online (Sandbox Code Playgroud)

密钥背景.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:drawable="@drawable/cleanbuttonnormal" />
<item
    android:state_pressed="true"
    android:drawable="@drawable/cleandeactivate" />
<item
    android:state_checkable="true"
    android:drawable="@drawable/cleanbuttonnormal" />
<item
    android:state_checkable="true"
    android:state_pressed="true"
    android:drawable="@drawable/cleandeactivate" />
<item
    android:state_checkable="true"
    android:state_checked="true"
    android:drawable="@drawable/cleanbuttonnormal" />
<item
    android:state_checkable="true"
    android:state_checked="true"
    android:state_pressed="true"
    android:drawable="@drawable/keybackground" />
</selector>
Run Code Online (Sandbox Code Playgroud)

背景颜色将更改为我的可绘制对象,但是当我按下键时,它不会更改为按下 - 状态。背景保持不变。请你帮助我好吗?

这是我的自定义键盘布局,启用预览以显示按钮被点击。

在此处输入图片说明

带有 8 的黑色按钮应该变成黄色。预览用于调试目的。

Ale*_*nov 4

问题出在您的州列表中keybackground.xml。以下是州列表文档的摘录:

\n\n
\n

在每次状态更改期间,都会从上到下遍历状态列表,并使用与当前状态匹配的第一个项目\xe2\x80\x94,选择不是基于“最佳匹配”,而只是基于第一个项目\n 符合国家的最低标准。

\n
\n\n

所以在你的情况下<item android:drawable="@drawable/cleanbuttonnormal" />每次都会选择。您应该更改项目的顺序,以便最具体的项目排在第一位。

\n