Android-非常规键盘,改变一个键上的文本



我正在尝试开发一个非常规的键盘,我需要改变一个键中的文本,这取决于按下的其他键的组合。类似考生视图,但在键盘内,在一个键。

我想知道我是否可以改变一个键上的文本,或者我是否可以使用不同的布局键盘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"是一个促进者。在你的视图中,你可以添加任何childView,所以按钮,ImageViews等将工作。

如果你需要KeyboardView使用的"图像"(位图),那么你可以"重绘"(通过覆盖onDrawn()函数)你的键盘,并对键或其布局进行任何更改…

请注意,键盘,键盘。键等都是促进器,为速度,低内存使用,并绘制"容易",通过改变布局,你可以使用它的任何东西,所以ScrollViews/LinearLayouts/framayouts可以大大简化你的程序/视图,但他们使用更多的内存,检查你的程序是否可以做出这个选择。

编辑:

一个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();

通过适当的事件,您可以更改键的图标或标签,检查键盘。键

您可以尝试使用android:keyboardMode作为Keyboard.Row的一部分,它根据您所处的模式选择性地显示行。因此,您可以使用不同的行(具有不同值和函数的键)创建多个模式。

相关内容

  • 没有找到相关文章

最新更新