【发布时间】:2018-10-30 04:35:02
【问题描述】:
我想开发自己的键盘。我按照here 中的说明进行操作
当我只使用一种键盘布局时,这就像一个魅力。如果我想使用两个布局并在它们之间切换,布局会发生一些奇怪的事情。
letter keyboard pic1 中的一切都很好,现在我正在切换到符号键盘布局。 symbols keyboard 但是在这里我们可以看到右键按钮从右边框退出。 现在将键盘布局切换回字母键盘,看看 右栏完全消失了。 letters keyboard 2 我该如何解决这个问题?
键盘布局看起来像这样
keys_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:keyHeight="60dp"
android:horizontalGap="3px"
android:verticalGap="3px"
android:keyTextColor="@color/colorWhite"
android:keyBackground="@color/colorPrimaryDark">
<Row>
<Key android:codes="1081" android:keyLabel="й" android:keyEdgeFlags="left"/>
<Key android:codes="1094" android:keyLabel="ц"/>
<Key android:codes="1091" android:keyLabel="у" android:popupKeyboard="@xml/popupkeyboard_template" android:popupCharacters="@string/alternates_for_y"/>
<Key android:codes="1082" android:keyLabel="к"/>
<Key android:codes="1077" android:keyLabel="е" android:popupKeyboard="@xml/popupkeyboard_template" android:popupCharacters="@string/alternates_for_e"/>
<Key android:codes="1085" android:keyLabel="н"/>
<Key android:codes="1075" android:keyLabel="г"/>
<Key android:codes="1096" android:keyLabel="ш"/>
<Key android:codes="1097" android:keyLabel="щ"/>
<Key android:codes="1079" android:keyLabel="з"/>
<Key android:codes="1093" android:keyLabel="х" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="1092" android:keyLabel="ф" android:keyEdgeFlags="left"/>
<Key android:codes="1099" android:keyLabel="ы"/>
<Key android:codes="1074" android:keyLabel="в"/>
<Key android:codes="1072" android:keyLabel="а" android:popupKeyboard="@xml/popupkeyboard_template" android:popupCharacters="@string/alternates_for_a"/>
<Key android:codes="1087" android:keyLabel="п"/>
<Key android:codes="1088" android:keyLabel="р"/>
<Key android:codes="1086" android:keyLabel="о"/>
<Key android:codes="1083" android:keyLabel="л"/>
<Key android:codes="1076" android:keyLabel="д"/>
<Key android:codes="1078" android:keyLabel="ж"/>
<Key android:codes="1101" android:keyLabel="э" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="-1" android:keyIcon="@drawable/ic_arrow_drop_up_black_24dp" android:keyEdgeFlags="left"/>
<Key android:codes="1103" android:keyLabel="я"/>
<Key android:codes="1095" android:keyLabel="ч"/>
<Key android:codes="1089" android:keyLabel="с" android:popupKeyboard="@xml/popupkeyboard_template" android:popupCharacters="@string/alternates_for_c"/>
<Key android:codes="1084" android:keyLabel="м"/>
<Key android:codes="1080" android:keyLabel="и"/>
<Key android:codes="1090" android:keyLabel="т"/>
<Key android:codes="1100" android:keyLabel="ь" android:popupKeyboard="@xml/popupkeyboard_template" android:popupCharacters="@string/alternates_for_hard_sign"/>
<Key android:codes="1073" android:keyLabel="б"/>
<Key android:codes="1102" android:keyLabel="ю"/>
<Key android:codes="-5" android:keyIcon="@drawable/ic_backspace" android:keyWidth="20%p" android:isRepeatable="true" android:keyEdgeFlags="right"/>
</Row>
<Row android:rowEdgeFlags="bottom">
<Key android:codes="0" android:keyLabel="\?123" android:keyWidth="20%p" android:keyEdgeFlags="left"/>
<Key android:codes="47" android:keyLabel="/"/>
<Key android:codes="32" android:keyLabel="@string/keyboard_space" android:keyWidth="40%p" android:isRepeatable="true"/>
<Key android:codes="46" android:keyLabel="."/>
<Key android:codes="-4" android:keyBackground="@color/colorPrimary" android:keyLabel="@string/keyboard_search" android:keyWidth="20%p" android:keyEdgeFlags="right"/>
</Row>
</Keyboard>
symbols_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:keyHeight="60dp"
android:horizontalGap="3px"
android:verticalGap="3px"
android:keyTextColor="@color/colorWhite"
android:keyBackground="@color/colorPrimaryDark">
<Row>
<Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
<Key android:codes="50" android:keyLabel="2"/>
<Key android:codes="51" android:keyLabel="3"/>
<Key android:codes="52" android:keyLabel="4"/>
<Key android:codes="53" android:keyLabel="5"/>
<Key android:codes="54" android:keyLabel="6"/>
<Key android:codes="55" android:keyLabel="7"/>
<Key android:codes="56" android:keyLabel="8"/>
<Key android:codes="57" android:keyLabel="9"/>
<Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left"/>
<Key android:codes="35" android:keyLabel="#"/>
<Key android:codes="36" android:keyLabel="$"/>
<Key android:codes="37" android:keyLabel="%"/>
<Key android:codes="38" android:keyLabel="&"/>
<Key android:codes="45" android:keyLabel="-"/>
<Key android:codes="43" android:keyLabel="+"/>
<Key android:codes="40" android:keyLabel="("/>
<Key android:codes="41" android:keyLabel=")"/>
<Key android:codes="91" android:keyLabel="[" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="42" android:keyLabel="*" android:keyEdgeFlags="left"/>
<Key android:codes="34" android:keyLabel="""/>
<Key android:codes="39" android:keyLabel="'"/>
<Key android:codes="58" android:keyLabel=":"/>
<Key android:codes="59" android:keyLabel=";"/>
<Key android:codes="33" android:keyLabel="!"/>
<Key android:codes="63" android:keyLabel="\?"/>
<Key android:codes="93" android:keyLabel="]"/>
<Key android:codes="-5" android:keyIcon="@drawable/ic_backspace" android:keyWidth="20%p" android:isRepeatable="true" android:keyEdgeFlags="right"/>
</Row>
<Row android:rowEdgeFlags="bottom">
<Key android:codes="0" android:keyLabel="АБВ" android:keyWidth="20%p" android:keyEdgeFlags="left"/>
<Key android:codes="47" android:keyLabel="/"/>
<Key android:codes="32" android:keyLabel="@string/keyboard_space" android:keyWidth="40%p" android:isRepeatable="true"/>
<Key android:codes="46" android:keyLabel="."/>
<Key android:codes="-4" android:keyBackground="@color/colorPrimary" android:keyLabel="@string/keyboard_search" android:keyWidth="20%p" android:keyEdgeFlags="right"/>
</Row>
</Keyboard>
我这样切换键盘布局
case 0:
if (iKeyboardType == 1) {
keyboard = new Keyboard(this, R.xml.symbols_layout);
iKeyboardType = 2;
}
else if (iKeyboardType == 2){
keyboard = new Keyboard(this, R.xml.keys_layout);
iKeyboardType = 1;
}
keyboardView.setKeyboard(keyboard);
keyboardView.invalidateAllKeys();
break;
【问题讨论】: