У меня возникла проблема и пока не удалось найти решение! Я реализовал пользовательскую клавиатуру с несколькими ключами. Каждый ключ получил фоновое изображение. Я хотел бы изменить цвет фона самой нажатой клавиши, как показано на оригинальной клавиатуре ниже:Пользовательская клавиатура Android Изменение цвета фона нажата
Я не хочу иметь предварительный просмотр, я хотел бы изменить цвет фона самого ключа , когда клавиша нажата. Вот мои файлы:
keyboard.xml
<?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"
/>
keybackground.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>
Цвет фона будет изменен на мой Drawable, но когда я нажимаю кнопку, он не будет изменен к нажатому состоянию. Фон остается тем же. Не могли бы вы мне помочь?
Здесь моя пользовательская раскладка клавиатуры, с предварительным просмотром, позволяет показать, что нажата кнопка.
Черная кнопка с 8 должен получить желтый цвет. Предварительный просмотр предназначен для отладки.
Спасибо Alexander за ваш ответ! Я понимаю проблему, но где я могу это изменить? Какие файлы сначала проверяются? Как я могу установить свой конкретный файл background.xml в качестве первого фона? Я заметил, что сделал опечатку. Я исправил один раз. Я использовал keybackground.xml insted of cleanbuttonnormal. Теперь он выглядит как мой код. – user3325230
Попробуйте обратный порядок! –
Хорошо, спасибо! Не понял этого факта. Вы правы, только переместили проверенное состояние выше, и все работает! Благодаря! – user3325230