У меня другой результат отображения макета KeyboardView между Galaxy Tab S4 под управлением Android 8.1.0 и моим телефоном Galaxy S8 под управлением Android 8.0.0. Разница заключается в ширине ключа и горизонтальном расстоянии.
Вот правильная клавиатура на моем телефоне:
На планшете клавиатура выглядит так:
Мы видим, что клавиши в 1, 2 и 3 ряду имеют разную ширину. Но они должны быть одинакового размера. На планшете кажется, что он изменен, чтобы взять 100% родительского контейнера. В то же время, HorizontalGap выталкивает ключи из родительского контейнера.
Вот код XML, который определяет раскладку клавиатуры:
<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="8.5%p"
android:keyHeight="7%p"
android:keyEdgeFlags="left">
<Row>
<Key android:keyLabel="Q" android:keyEdgeFlags="left" />
<Key android:keyLabel="W" />
<Key android:keyLabel="E" />
<Key android:keyLabel="R" />
<Key android:keyLabel="T" />
<Key android:keyLabel="Z" />
<Key android:keyLabel="U" />
<Key android:keyLabel="I" />
<Key android:keyLabel="O" />
<Key android:keyLabel="P" />
<Key android:codes="55000" android:keyIcon="@drawable/del_keyboard" android:isRepeatable="true" android:keyWidth="15%p" android:keyEdgeFlags="right" />
</Row>
<Row>
<Key android:keyLabel=" " android:keyHeight="0px" android:keyWidth="0px" android:keyEdgeFlags="left" android:horizontalGap="11.75%p"/>
<Key android:keyLabel="A" />
<Key android:keyLabel="S" />
<Key android:keyLabel="D" />
<Key android:keyLabel="F" />
<Key android:keyLabel="G" />
<Key android:keyLabel="H" />
<Key android:keyLabel="J" />
<Key android:keyLabel="K" />
<Key android:keyLabel="L" android:keyEdgeFlags="right" />
</Row>
<Row>
<Key android:keyLabel=" " android:keyHeight="0px" android:keyEdgeFlags="left" android:keyWidth="0px" android:horizontalGap="20%p"/>
<Key android:keyLabel="Y" />
<Key android:keyLabel="X" />
<Key android:keyLabel="C" />
<Key android:keyLabel="V" />
<Key android:keyLabel="B" />
<Key android:keyLabel="N" />
<Key android:keyLabel="M" android:keyEdgeFlags="right" />
</Row>
<Row>
<Key android:keyLabel=" " android:keyHeight="0px" android:keyWidth="0px" android:horizontalGap="25%p"/>
<Key android:codes="55001" android:keyEdgeFlags="left" android:keyIcon="@drawable/white_space_keyboard" android:keyWidth="50%p" />
</Row>
</Keyboard>
Для получения дополнительной информации клавиатурное представление находится во фрагменте, включенном в slipPaneLayout.
Есть идеи, что здесь происходит? Заранее спасибо!