繁体   English   中英

Android-非常规键盘,更改按键上的文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM