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

标签 android keyboard ime android-input-method

我正在尝试开发一个非常规键盘,我需要根据按下的其他键的组合来更改某个键中的文本。 与“候选人 View ”类似,但在键盘内,一键操作。

我想知道是否可以更改按键上的文本,或者是否可以对键盘 XML 使用不同的布局。

我的键盘是基于软键盘应用程序示例,可以引用此link .

最佳答案

您可以使用Tags对于您的 View ,因此您可以在按下它时使用 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”是一个促进者。在您的 View 中,您可以添加 View 的任何,因此 Button、ImageView 等都可以使用。

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

请注意,Keyboard、Keyboard.Key 等都是促进者,为了速度、低内存占用和绘制“轻松”,通过改变布局,您可以使用任何东西,所以 ScrollViews/LinearLayouts/Framelayouts可以极大地简化您的程序/ View ,但它们会使用更多的内存,请检查您的程序是否可以做出此选择。

编辑:

Button 对象具有多个属性。它的显示文本是一个String,使用button.getText().toString()来获取它。标签,是指向任何类型的对象的“指针”......如果您想写入按钮的当前文本,并使用另一个相关系统,您可以使用以下内容:

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.");

抱歉英语不好,如果有什么难以理解的地方,请告诉我

关于Android-非常规键盘,更改按键上的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39214153/

相关文章:

android - 检测手机键盘是否滑出

android - 自定义软键盘 View 显示不正确

android - InputConnection.commitCorrection() 似乎无法正常工作

android - 在Dagger2中,@Singleton注解的用途是什么?

android - 更改方向时如何让 Activity 继续流式传输视频

android - 即使在 ScrollView 中,键盘也会隐藏我的一半编辑文本和按钮

navigation - HTML <TextArea> 中的 RTL(从右到左)键盘导航

安卓自定义键盘

android - 在某些 3G 网络上避免图像压缩

android - 以编程方式自定义 SearchView