标签: android-input-method

showSoftInputFromInputMethod 已弃用 Android P API 28

showSoftInputFromInputMethod该类中的方法在InputMethodManagerAndroid P 中已弃用。根据文档,我们应该InputMethodService.requestShowSelf(int)在 Android P 及更高版本中使用该方法。

现在的问题是我们如何获得该类的参考InputMethodService。我尝试创建一个新对象并调用requestShowself()它,但它不起作用。

InputMethodService inputMethodService = new InputMethodService();
inputMethodService.requestShowSelf(0);
Run Code Online (Sandbox Code Playgroud)

我们如何使用建议的替代方案来替代 API 28 及更高版本的弃用?

android android-keypad android-input-method inputmethodmanager android-9.0-pie

3
推荐指数
1
解决办法
8165
查看次数

在输入法服务中隐藏软键盘

我正在尝试从InputMethodService隐藏我的软键盘,并且无法正常工作。这是我在onFinishInput()方法中使用的代码:

InputMethodManager im = (InputMethodManager)
context.getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(mInputView.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

android android-input-method

2
推荐指数
1
解决办法
2800
查看次数

在 ViewGroup 中包装 KeyboardView:java.lang.IllegalStateException:指定的子项已经有父项

我正在使用 InputMethodService、Keyboard 和 KeyboardView(我知道,它最近已被弃用)来创建自定义键盘。

  override fun onCreateInputView(): View {
    view = layoutInflater.inflate(
        R.layout.keyboard_view_test,
        null
    )
    keyboardView =
        view.findViewById<KeyboardView>(R.id.keyboard)
    keyboard = Keyboard(this, R.xml.keyboard_layout)
    keyboardView.keyboard = keyboard
    keyboardView.isPreviewEnabled = false
    keyboardView.setOnKeyboardActionListener(this)
    return keyboardView

}
Run Code Online (Sandbox Code Playgroud)

当使用 Keyboard_view_test.xml 中的 KeyboardView 作为根元素时,键盘工作得非常好。当我开始将它包装在 LinearLayout 或任何其他 ViewGroup 中而不更改任何其他内容时(请参阅keyboard_view_test.xml),我得到一个 IllegalStateException。我不明白,堆栈跟踪没有引用我的任何代码。我怎样才能让它发挥作用?

键盘视图测试.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorGboardBackground">

<android.inputmethodservice.KeyboardView
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    android:background="@color/colorGboardBackground"
    android:keyBackground="@drawable/key_background"
    android:keyPreviewLayout="@layout/key_preview"
    android:keyPreviewOffset="10dp"
    android:keyTextColor="@color/colorGboardKeyText"
    android:keyTextSize="22sp"
    android:labelTextSize="22sp"
    android:shadowRadius="0" />
Run Code Online (Sandbox Code Playgroud)

该错误似乎发生在 onCreateInputView() 返回后

错误堆栈:

 java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on …
Run Code Online (Sandbox Code Playgroud)

android android-softkeyboard android-input-method android-viewgroup

2
推荐指数
1
解决办法
377
查看次数

Android-确定InputMethod(自定义键盘)的调用应用程序

我正在按照此指南实施自定义键盘:http : //developer.android.com/guide/topics/text/creating-input-method.html

有没有一种方法可以从我的KeyboardService内部“连接”到哪个应用程序(=程序包ID)(哪个应用程序接收我发送的输入事件)?

keyboard android android-service android-input-method android-service-binding

1
推荐指数
1
解决办法
234
查看次数

使用 EditText 连续输入 OTP

这里是 4EditText用于输入数字密码。我希望它是这样的,如果第一个EditText由 1 个数字填充,那么焦点应该转到下一个EditText并且也应该以相反的方式工作。这样用户就可以继续从最左边输入密码,也可以从最右边以同样的方式擦除。

有人可以建议什么是最好的方法吗?

目前看起来像这样

android android-layout android-input-method android-edittext

0
推荐指数
1
解决办法
1万
查看次数