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
我正在尝试从InputMethodService隐藏我的软键盘,并且无法正常工作。这是我在onFinishInput()方法中使用的代码:
InputMethodManager im = (InputMethodManager)
context.getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(mInputView.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在使用 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
我正在按照此指南实施自定义键盘:http : //developer.android.com/guide/topics/text/creating-input-method.html
有没有一种方法可以从我的KeyboardService内部“连接”到哪个应用程序(=程序包ID)(哪个应用程序接收我发送的输入事件)?
keyboard android android-service android-input-method android-service-binding
这里是 4EditText用于输入数字密码。我希望它是这样的,如果第一个EditText由 1 个数字填充,那么焦点应该转到下一个EditText并且也应该以相反的方式工作。这样用户就可以继续从最左边输入密码,也可以从最右边以同样的方式擦除。
有人可以建议什么是最好的方法吗?
android android-layout android-input-method android-edittext