layout: post comments: true title: 创建安卓键盘演示——改为 XML 布局 description: date: 2020-02-20 00:00:00 -0700
续前文:创建安卓键盘演示——“好不”
因为一些 UI 元素的属性似乎只有在 XML 中才能设置,于是先摸索一下如何使用 XML 布局代替原本在 Java 代码中初始化 UI。
xml/keyboard.xml:
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android">
<Row>
<Key
android:codes="1"
android:keyLabel="好" />
<Key
android:codes="2"
android:keyLabel="不" />
</Row>
</Keyboard>
layout/keyboard_view.xml (值得一提,KeyboardView 和 Keyboard 在最新的 API 29 中已作废)
<?xml version="1.0" encoding="utf-8"?>
<android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.inputmethodservice.KeyboardView>
Java 部分相应修改:
public class 好不键盘 extends InputMethodService implements KeyboardView.OnKeyboardActionListener {
private static final String 字符 = "@好不";
@Override
public View onCreateInputView() {
KeyboardView 视图 = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard_view, null);
Keyboard 键盘 = new Keyboard(this, R.xml.keyboard);
视图.setKeyboard(键盘);
视图.setOnKeyboardActionListener(this);
return 视图;
}
@Override
public void onKey(int 码, int[] keyCodes) {
InputConnection 输入连接 = getCurrentInputConnection();
if (输入连接 != null) {
char 字 = 字符.charAt(码);
输入连接.commitText(String.valueOf(字), 1);
}
}
//...一堆空的重写方法
}
效果差很多,还需研究如何设置风格: