[英]Android- Unconventional Keyboard, change text on a key
我正在尝试开发非常规键盘,我需要根据所按其他键的组合来更改键中的文本。 像“候选人视图”一样,但是在键盘内部,只有一个按键。
我想知道是否可以更改按键上的文本,或者是否可以对键盘XML使用不同的布局。
我的键盘基于“软键盘”应用程序示例,可以在此链接中引用。
您可以为视图使用标签 ,因此在按下时可以使用setTag / getTag机制。
private final View.OnClickListener myListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getTag() != null) {
if (v.getTag() instanceof String) {
getCurrentInputConnection().commitText((String) v.getTag(), 1);
} else {
Log.v(TAG, "(v.getTag() instanceof String) == false");
}
} else {
Log.e(TAG, "(v.getTag() != null) == false");
}
}
};
和密钥的XML示例:
<Button
android:id="@+id/aButton_N"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:tag="n"
android:text="n"
android:onClick="myListener"
android:textAllCaps="false" />
更改示例:
Button myBt = (Button) findViewWithTag("n");
myBt.setTag("N");
对于所有其他目的,请记住“ KeyboardView”是辅助工具。 在你看来,你可以添加任何child
一个的View
,所以按钮,ImageViews等会工作。
如果需要KeyboardView使用的“图像”(位图),则可以“重绘”键盘(通过覆盖onDrawn()
函数),并进行按键或其布局所需的任何更改...
请注意,Keyboard,Keyboard.Key等都是促进程序,可提高速度,减少内存使用并绘制“简易性”,通过更改布局,您可以对其进行任何使用,因此ScrollViews / LinearLayouts / Framelayouts可以大大简化您的程序/视图,但它们使用了更多的内存,请检查您的程序是否可以做出此选择。
一个Button
对象,具有几个属性。 它的显示文本是String
,使用button.getText().toString()
来获取它。 标签是指向任何Object
的“指针”。...如果要编写按钮的当前文本,并使用其他相关系统,则可以使用以下命令:
private final View.OnClickListener myListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Button thisButton = (Button) v;
getCurrentInputConnection().commitText(thisButton.getText().toString(), 1);
}
};
并更改按钮的“内容”:
Button aButton = (Button) findViewById(YOUR.ID.HERE);
aButton.setText("a new long string to replace the old value.");
对不起,英语不好,如果很难理解,请告诉我
你可以像这样得到所有的钥匙
List<Keyboard.Key> keys = mKeyboardView.getKeyboard().getKeys();
在适当的情况下,您可以更改键的图标或标签,请检查Keyboard.Key 。
您可以尝试使用Keyboard.Row
随附的android:keyboardMode
,它会根据您所处的模式有选择地显示行。因此,您可以创建具有不同行(具有不同值和功能的键)的多种模式。
这是参考链接 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.