Как установить цвета атрибута на пользовательской клавиатуре?

Я пытаюсь заставить мою собственную клавиатуру изменить его цвета в соответствии с текущей темой в проекте, но она не работает, это мой код:

<?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:keyBackground = "@drawable/keybackground"
        android:keyTextColor="?attr/colorPrimary"
        android:background="?attr/android:colorBackground"
        android:keyTextSize="22sp"/>

Когда ставлю штатные цвета все работает отлично! Как я могу сделать это гибким?

1 ответ

Я не уверен, что это то, что вы ищете, но вы можете попробовать использовать пространство имен res-auto:

<android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    custom:keyBackground = "@drawable/keybackground"
    custom:keyTextColor="?attr/colorPrimary"
    android:background="?attr/android:colorBackground"
    custom:keyTextSize="22sp"/>

Если вы хотите изменить его динамически во время работы приложения, я думаю, что ответ - это правильный путь. Вещи, которые должны быть изменены динамически, предпочтительно выполняются в коде, в то время как статическое проектирование предпочтительно выполняется в xml.

Другие вопросы по тегам