前言
前段时间改造了公司的安全键盘,是基于Dialog
和Button
自定义的。也因此借机了解下 Android 平台提供的自定义键盘接口。主要有两个类:Keyboard
和KeyboardView
。很搞笑的是,百度出来自定义Android键盘(与自定义Android输入法不同)的文章千篇一律。
注:这里讲的自定义键盘同公司安全键盘是两种实现方式,不存在泄露公司内部技术的问题!!!
不去吐槽别人,楼主秉持只原创和翻译的作风,输出这第50篇博客。相关属性部分是对照官方文档和Demo实践翻译的,若有瑕疵,请见谅。楼主csdn主页请点击flueky专栏。
相关属性
Keyboard
序号 |
属性 |
类型 |
描述 |
1 |
keyHeight |
dimension/fractional |
Key高度,区分精确值(dp、px等)和相对值(%、%p) |
2 |
keyWidth |
dimension/fractional |
Key宽度,同上 |
3 |
horizontalGap |
dimension/fractional |
Key水平间隙,同上 |
4 |
verticalGap |
dimension/fractional |
Key按键间隙(垂直),同上 |
Row
序号 |
属性 |
类型 |
描述 |
1 |
keyHeight |
dimension/fractional |
Key高度,区分精确值(dp、px等)和相对值(%、%p) |
2 |
keyWidth |
dimension/fractional |
Key宽度,同上 |
3 |
horizontalGap |
dimension/fractional |
Key水平间隙,同上 |
4 |
verticalGap |
dimension/fractional |
Key按键间隙(垂直),同上 |
5 |
keyboardMode |
reference |
键盘类型,如果该行的类型不符合键盘的类型,将跳过该行。 |
6 |
rowEdgeFlags |
enum |
行边界标记,top/bottom,键盘顶(底)部锚点。 |
Key
序号 |
属性 |
类型 |
描述 |
1 |
keyHeight |
dimension/fractional |
Key高度,区分精确值(dp、px等)和相对值(%、%p) |
2 |
keyWidth |
dimension/fractional |
Key宽度,同上 |
3 |
horizontalGap |
dimension/fractional |
Key水平间隙,同上 |
4 |
verticalGap |
dimension/fractional |
Key按键间隙(垂直),同上 |
5 |
codes |
int |
Key输出符号对应的Unicode值,官方还说支持字转义字符串,不明白。 |
6 |
iconPreview |
reference |
弹出回显的icon |
7 |
isModifier |
boolean |
是否功能修饰键,如:Alt/Shift |
8 |
isSticky |
boolean |
是否是开关键 |
9 |
isRepeatable |
boolean |
是否允许重复。true表示长按时重复执行。 |
10 |
keyEdgeFlags |
enum |
Key边缘位置标记,left/right,键盘左(右)边锚点。 |
11 |
keyIcon |
reference |
替换label显示在按键上的icon。 |
12 |
keyLabel |
reference |
显示在Key上的标签。 |
13 |
keyOutputText |
string |
Key按下时输出的字符或字符串。 |
14 |
popupCharacters |
string |
小键盘显示的字符,用于显示Key候选项。 |
15 |
popupKeyboard |
reference |
按键候选小键盘的keyboard布局 |
KeyboardView
序号 |
属性 |
类型 |
描述 |
1 |
keyBackground |
reference |
按键的图像背景,必须包含多个状态的drawable |
2 |
verticalCorrection |
dimension |
补充触摸y坐标的偏移,用于偏差矫正 |
3 |
keyPreviewLayout |
reference |
按键按下时预览框的布局 |
4 |
keyPreviewOffset |
dimension |
按键按下时预览框的偏移。>0 向下,<0 向上。 |
5 |
keyPreviewHeight |
dimension |
按键按下时预览框的高度。 |
6 |
keyTextSize |
dimension |
按键文字大小。 |
7 |
keyTextColor |
color |
按键文字颜色。 |
8 |
labelTextSize |
dimension |
标签文字大小,keylabel有多个字符且keycodes只有一个值时,该属性生效。 |
9 |
popupLayout |
reference |
按键候选小键盘的KeyboardView布局。 |
10 |
shadowRadius |
float |
按键文字阴影半径 |
11 |
shadowColor |
color |
按键文字阴影颜色 |
自定义键盘
布局
<android.inputmethodservice.KeyboardView
android:id="@+id/activity_main_keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#212121"
android:keyBackground="@drawable/key_bg"
android:keyTextColor="#dddddd"
android:keyTextSize="18sp"
android:labelTextSize="18sp"
a