-1

我正在唱键盘视图来选择。选择键盘后,如何在textview android中显示选中的键盘文字?

我只能显示语言,但如何显示更改键盘的标题和摘要?

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.N)
            @Override
            public void onClick(View view) {

                InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.showInputMethodPicker();
                InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
                String localeString = ims.getLocale();
                Locale locale = new Locale(localeString);
                String currentLanguage = locale.getDisplayLanguage();
                Toast.makeText(MainActivity.this,currentLanguage,Toast.LENGTH_SHORT)
                        .show();
               //Title and summary for change keyboard  need to display

            }
        });
    }
}
4

1 回答 1

1

有两种方法可以解决这个问题,最简单的方法是使用 non-size-edittext

不要隐藏文本视图,如果它隐藏,那么 edtTxt.getText().toString() 总是为空

<EditText
    android:id="@+id/edtTxt"
    android:layout_width="0px"
    android:layout_height="0px" />

这样用户就看不到了。并单击按钮

edtTxt.requestFocus();
edtTxt.setText("");
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

inputMethodManager.toggleSoftInputFromWindow(edtTxt.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED,
            0);

现在edtTxt.getText().toString()给出文本。

如果没有 EditText,您将很难过。

InputMethod 需要连接到视图。无论您使用什么视图,您都需要重写 onCreateInputConnection 以返回一个自定义 InputConnection 对象,该对象至少实现 commitText(用于单词输入)、deleteSurroundingText(用于删除)和 sendKeyEvent(用于假定您处于哑模式的键盘),以及所有的完成功能。输入连接是复杂的事情,如果你不正确,你会搞砸 Swiftkey 和 Swype 等 3rd 方键盘。我真的不建议这样做。

如果你想这样做,最好的机会是声明你的窗口是 TYPE_NULL 输入类型。大多数键盘都会让自己变得笨拙,并假设您在该模式下只接受最简单的命令。但你不能指望它。

我会查看 EditText 类返回的 InputConnection 并尽可能多地复制它。

于 2021-01-12T14:03:39.520 回答