Поскольку в течение двух месяцев здесь не было никакого ответа, я потратил время на то, чтобы побольше поразмышлять.Теперь мне повезло сегодня, и я хочу быть добрым к следующему лингвисту, который также нуждается в настраиваемой клавиатуре и должен работать на примерах:
mykeyboard.java указывает на файл макета дляосновная клавиатура так (третья строка «ввод»).Я просто даю цитату из трех строк:
@Override public View onCreateInputView() {
mInputView = (LatinKeyboardView) getLayoutInflater().inflate(
R.layout.input, null);
Итак, внутри моего \ res \ layout \ input.xml я добавил ссылку на свой всплывающий макет:
<org.my.project.here.LatinKeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:keyBackground="@drawable/samplekeybackground"
android:keyTextColor="#000000"
android:popupLayout="@layout/popup" <!-- here it is -->
/>
А мой \ res \ layout \ popup.xml выглядит так;Я считаю, что скопировал его из предоставленного примера проекта.Сегодня я только что поменял две отмеченные линии на светло-синий цвет фона и черный цвет текста, и это, наконец, сработало.Похоже, я зацикливал ссылки ранее, но сообщений об ошибках не было, только уродливый черный макет по умолчанию.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/samplekeybackground">
<android.inputmethodservice.KeyboardView
android:id="@android:id/keyboardView"
android:background="@color/colorPrimary"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:keyTextSize="22sp"
android:keyBackground="@drawable/samplekeybackground" <!-- here it is -->
android:keyTextColor="#000000" <!-- and here -->
tools:ignore="ResourceCycle"/>
<ImageButton android:id="@android:id/closeButton"
android:background="@android:color/transparent"
android:src="@drawable/btn_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="8dp"
android:clickable="true"/>
Упомянутый samplekeybackground.xml - это очень простое определение, указывающее на два фактических xml-colour-Definitions:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/normal" />
<!-- Pressed state -->
<item
android:state_pressed="true"
android:drawable="@drawable/pressed" /></selector>
И чтобы быть полным, потому что я ценю вещи, которые я могу просто скопировать и поиграть для тестирования, вот normal.xml ;pressed.xml такой же, только темно-синий:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1dp" android:color="#A1B7F7" />
<solid android:color="#C7D4FA"/>
</shape>
Все это от угадывания и построения многих версий, пока мне не повезло.Возможно, не может ответить ни на какие дополнительные вопросы, но это работает: