I'm trying to create a custom Android keyboard. Initially when the keyboard loads the keys layout is fine, But once I change to symbols the keypad width changes and the last keys are hidden. Even if I toggle to the same key set again I'm facing the same issue.
keyboard_view.xml
<?xml version="1.0" encoding="utf-8"?>
<com.docbuddy.android.docbuddyvoice.keyboard.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:paddingBottom="@dimen/spacing_medium"
android:paddingTop="@dimen/spacing_small"
android:background="#E7EAED"
android:focusable="true"
android:focusableInTouchMode="true"
app:keyBackground="@drawable/key_background"
app:keyPreviewOffset="0dp"
app:keyTextColor="#000"
app:keyTextSize="25sp"
app:labelTextSize="25sp"
/>
alphabet_keys.xml
<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:horizontalGap="@dimen/horizontal_gap"
app:keyHeight="@dimen/key_height"
app:keyTextColor="@android:color/black"
app:keyWidth="@dimen/key_width"
app:verticalGap="@dimen/vertical_gap">
<Row android:rowEdgeFlags="top">
<Key
app:codes="113"
app:keyEdgeFlags="left"
app:keyLabel="q" />
<Key
app:codes="119"
app:keyLabel="w" />
<Key
app:codes="101"
app:keyLabel="e" />
<Key
app:codes="114"
app:keyLabel="r" />
<Key
app:codes="116"
app:keyLabel="t" />
<Key
app:codes="121"
app:keyLabel="y" />
<Key
app:codes="117"
app:keyLabel="u" />
<Key
app:codes="105"
app:keyLabel="i" />
<Key
app:codes="111"
app:keyLabel="o" />
<Key
app:codes="112"
app:keyEdgeFlags="right"
app:keyLabel="p" />
</Row>
<Row>
<Key
app:codes="97"
app:keyEdgeFlags="left"
app:keyLabel="a" />
<Key
app:codes="115"
app:keyLabel="s" />
<Key
app:codes="100"
app:keyLabel="d" />
<Key
app:codes="102"
app:keyLabel="f" />
<Key
app:codes="103"
app:keyLabel="g" />
<Key
app:codes="104"
app:keyLabel="h" />
<Key
app:codes="106"
app:keyLabel="j" />
<Key
app:codes="107"
app:keyLabel="k" />
<Key
app:codes="108"
app:keyEdgeFlags="right"
app:keyLabel="l" />
</Row>
<Row>
<Key
app:codes="-1"
app:iconPreview="@drawable/ic_capslock"
app:isModifier="true"
app:isSticky="true"
app:keyEdgeFlags="left"
app:keyIcon="@drawable/ic_capslock"
app:keyWidth="20%p" />
<Key
app:codes="122"
app:keyLabel="z" />
<Key
app:codes="120"
app:keyLabel="x" />
<Key
app:codes="99"
app:keyLabel="c" />
<Key
app:codes="118"
app:keyLabel="v" />
<Key
app:codes="98"
app:keyLabel="b" />
<Key
app:codes="110"
app:keyLabel="n" />
<Key
app:codes="109"
app:keyLabel="m" />
<Key
app:codes="-5"
app:iconPreview="@drawable/ic_backspace"
app:isRepeatable="true"
app:keyEdgeFlags="right"
app:keyIcon="@drawable/ic_backspace"
app:keyWidth="20%p" />
</Row>
<Row app:rowEdgeFlags="bottom">
<Key
app:codes="-7"
app:isModifier="true"
app:isSticky="true"
app:keyEdgeFlags="left"
app:keyLabel="\?123"
app:keyWidth="15%p" />
<Key
app:codes="44"
app:keyLabel=","
app:keyWidth="10%p" />
<Key
app:codes="32"
app:isRepeatable="true"
app:keyWidth="50%p" />
<Key
app:codes="46"
app:keyLabel="."
app:keyWidth="10%p" />
<Key
app:codes="-4"
app:iconPreview="@drawable/ic_done"
app:keyEdgeFlags="right"
app:keyIcon="@drawable/ic_done"
app:keyWidth="15%p" />
</Row>
</Keyboard>
symbol_keys.xml
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:horizontalGap="@dimen/horizontal_gap"
app:keyHeight="@dimen/key_height"
app:keyTextColor="@android:color/black"
app:keyWidth="@dimen/key_width"
app:verticalGap="@dimen/vertical_gap">
<Row android:rowEdgeFlags="top">
<Key
app:codes="49"
app:keyEdgeFlags="left"
app:keyLabel="1" />
<Key
app:codes="50"
app:keyLabel="2" />
<Key
app:codes="51"
app:keyLabel="3" />
<Key
app:codes="52"
app:keyLabel="4" />
<Key
app:codes="53"
app:keyLabel="5" />
<Key
app:codes="54"
app:keyLabel="6" />
<Key
app:codes="55"
app:keyLabel="7" />
<Key
app:codes="56"
app:keyLabel="8" />
<Key
app:codes="57"
app:keyLabel="9" />
<Key
app:codes="48"
app:keyEdgeFlags="right"
app:keyLabel="0" />
</Row>
<Row>
<Key
app:codes="64"
app:keyEdgeFlags="left"
app:keyLabel="\@" />
<Key
app:codes="35"
app:keyLabel="\#" />
<Key
app:codes="36"
app:keyLabel="$" />
<Key
app:codes="38"
app:keyLabel="&" />
<Key
app:codes="45"
app:keyLabel="-" />
<Key
app:codes="43"
app:keyLabel="+" />
<Key
app:codes="40"
app:keyLabel="(" />
<Key
app:codes="41"
app:keyLabel=")" />
<Key
app:codes="47"
app:keyEdgeFlags="right"
app:keyLabel="/" />
</Row>
<Row>
<Key
app:codes="-1"
app:iconPreview="@drawable/ic_capslock"
app:keyEdgeFlags="left"
app:isModifier="true"
app:keyIcon="@drawable/ic_capslock"
app:isSticky="true"
app:keyWidth="20%p" />
<Key
app:codes="42"
app:keyLabel="*" />
<Key
app:codes="37"
app:keyLabel="%" />
<Key
app:codes="34"
app:keyLabel=""" />
<Key
app:codes="58"
app:keyLabel=":" />
<Key
app:codes="59"
app:keyLabel=";" />
<Key
app:codes="33"
app:keyLabel="!" />
<Key
app:codes="61"
app:keyLabel="=" />
<Key
app:codes="-5"
app:iconPreview="@drawable/ic_backspace"
app:isRepeatable="true"
app:keyEdgeFlags="right"
app:keyIcon="@drawable/ic_backspace"
app:keyWidth="20%p" />
</Row>
<Row app:rowEdgeFlags="bottom">
<Key
app:codes="-8"
app:isModifier="true"
app:isSticky="true"
app:keyEdgeFlags="left"
app:keyLabel="\ABC"
app:keyWidth="15%p" />
<Key
app:codes="63"
app:keyLabel="\?"
app:keyWidth="10%p" />
<Key
app:codes="32"
app:isRepeatable="true"
app:keyWidth="50%p" />
<Key
app:codes="95"
app:keyLabel="_"
app:keyWidth="10%p" />
<Key
app:codes="-4"
app:iconPreview="@drawable/ic_done"
app:keyEdgeFlags="right"
app:keyIcon="@drawable/ic_done"
app:keyWidth="15%p" />
</Row>
</Keyboard>
dimens.xml
<dimen name="vertical_gap">8dp</dimen>
<dimen name="horizontal_gap">3dp</dimen>
<dimen name="key_height">50dp</dimen>
<dimen name="key_width">10%p</dimen>
I change the keyboard by onKeyEvent
case Keyboard.KEYCODE_SYMBOLS:
keyboard = new Keyboard(this, R.xml.symbols_layout);
keyboardView.setKeyboard(keyboard);
break;
case Keyboard.KEYCODE_ALPHABETS:
keyboard = new Keyboard(this, R.xml.alphabets_layout);
keyboardView.setKeyboard(keyboard);

