您可以将Tags 用于您的视图,因此您可以在按下它时使用 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");
}
}
};
还有一个key的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”是一个促进者。在您的视图中,您可以添加View 中的任何child,因此按钮、图像视图等都可以使用。
如果您需要 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.");
抱歉英语不好,如果有什么难以理解的地方,请告诉我