不推荐使用键盘后如何为键盘实现自定义视图?

我正在使用最新的 Android Studio 和 Kotlin 为 Android(API 100% 用户)制作系统键盘。我正在尝试遵循IME 生命周期

有关于覆盖 onCreateInputView() 的指南

override fun onCreateInputView(): View {
    return layoutInflater.inflate(R.layout.input, null).apply {
        if (this is MyKeyboardView) {
            setOnKeyboardActionListener(this@MyInputMethod)
            keyboard = latinKeyboard
        }
    }
}

其中 MyKeyboardView 是呈现键盘的 KeyboardView 的自定义实现的实例。

问题只是因为android.inputmethodservice.KeyboardView自 API 级别 29 以来已被弃用。文档说

此类已被弃用,因为这只是一个方便的 UI 小部件类,应用程序开发人员可以在现有公共 API 之上重新实现它。

我不想使用已弃用的功能,但该指南尚未针对此更改进行更新。制作我自己的残酷方法只是在约束布局中制作大量按钮。这是正确的方法吗?作为一个完整的初学者,一旦我无法遵循指南,我就会迷失方向。

农通巴姆通提

很明显,从这里的文档中可以看出

此类在 API 级别 29 中已弃用。此类已弃用,因为这只是一个方便的 UI 小部件类,应用程序开发人员可以在现有公共 API 之上重新实现。如果您已经依赖该类,请考虑将 AOSP 中的实现复制到您的项目中,或者自己重新实现一个类似的小部件

这意味着您必须使用所有键创建自己的视图,这也意味着处理所有点击事件,如输入、删除和切换键盘,例如。自己去符号等

其实有很多方法可以做到。但是我会尝试给您一个简单的想法,您将遵循在使用已弃用的 时使用的大部分步骤KeyboardView

首先创建您的自定义键盘布局,您可以使用任何布局,具体取决于您喜欢什么LinearLayoutRelativeLayout以及Buttons 用于按键等。我使用 aGridLayoutButtons。

然后InputMethodService像往常一样创建子类

public class MyIMService extends InputMethodService implements View.OnClickListener {

    private static String TAG = "MyIMService";

    @Override
    public View onCreateInputView() {
        View myKeyboardView = getLayoutInflater().inflate(R.layout.key_layout, null);
        Button btnA = myKeyboardView.findViewById(R.id.btnA);
        btnA.setOnClickListener(this);
        //ADD ALL THE OTHER LISTENERS HERE FOR ALL THE KEYS
        return myKeyboardView;
    }

    @Override
    public void onClick(View v) {
        //handle all the keyboard key clicks here

        InputConnection ic = getCurrentInputConnection();
        if (v instanceof Button) {
            String clickedKeyText = ((Button) v).getText().toString();
            ic.commitText(clickedKeyText, 1);
        }
    }
}

正如我之前所说,您可以尝试不同的方式来处理所有的点击事件。但这应该给你基本的想法。

而已。您必须像往常一样在清单文件中添加此服务,其他步骤也像往常一样。这现在应该可以工作了。

更新 Kotlin 版本:

class MyIMService : InputMethodService(), View.OnClickListener {
    override fun onCreateInputView(): View {
        val myKeyboardView: View = layoutInflater.inflate(R.layout.key_layout, null)
        val btnA: Button = myKeyboardView.findViewById(R.id.btnA)
        btnA.setOnClickListener(this)
        //ADD ALL THE OTHER LISTENERS HERE FOR ALL THE KEYS
        return myKeyboardView
    }

    override fun onClick(v: View) {
        //handle all the keyboard key clicks here
        val ic = currentInputConnection
        if (v is Button) {
            val clickedKeyText: String = (v as Button).getText().toString()
            ic.commitText(clickedKeyText, 1)
        }
    }

    companion object {
        private const val TAG = "MyIMService"
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为UIWebView设置自定义键盘

来自分类Dev

如何为Linux创建自定义键盘布局?

来自分类Dev

使用Xamarin在键盘上方添加自定义视图

来自分类Dev

Android中的自定义键盘视图

来自分类Dev

搜狗自定义键盘不触发键盘

来自分类Dev

使用自定义键盘在全屏模式下自定义视图

来自分类Dev

如何使自定义键盘与Swift一起使用

来自分类Dev

如何制作自定义键盘布局?

来自分类Dev

如何制作自定义键盘布局?

来自分类Dev

如何激活自定义键盘布局

来自分类Dev

如何显示自定义键盘

来自分类Dev

如何激活自定义键盘布局

来自分类Dev

JavaScript:如何清除我的自定义键盘映射并使用默认键盘映射

来自分类Dev

如何为我的应用程序创建自定义键盘

来自分类Dev

如何为Android自定义键盘设置不同的按键背景

来自分类Dev

如何为嵌套菜单项添加自定义键盘快捷键?

来自分类Dev

如何为嵌套菜单项添加自定义键盘快捷键?

来自分类Dev

自定义键盘中handleInputModeList的正确实现

来自分类Dev

android中图像的自定义键盘实现

来自分类Dev

自定义键盘视图框架返回0

来自分类Dev

带有自定义键盘视图按钮的浓缩咖啡

来自分类Dev

如何在自定义键盘按钮swift中实现功能齐全的退格键

来自分类Dev

自定义键盘间距

来自分类Dev

如何在 UIAlert 出现时显示键盘,其中带有自定义 UITextLabel 视图的 UIAlert

来自分类Dev

如何在Windows 8中使用通过Microsoft键盘布局创建器创建的自定义键盘布局?

来自分类Dev

如何在Xcode 5中自定义默认键盘

来自分类Dev

如何用俄语字母创建自定义键盘?

来自分类Dev

如何在自定义位置打开Tabtip键盘?

来自分类Dev

如何在Windows中删除自定义键盘布局?

Related 相关文章

  1. 1

    如何为UIWebView设置自定义键盘

  2. 2

    如何为Linux创建自定义键盘布局?

  3. 3

    使用Xamarin在键盘上方添加自定义视图

  4. 4

    Android中的自定义键盘视图

  5. 5

    搜狗自定义键盘不触发键盘

  6. 6

    使用自定义键盘在全屏模式下自定义视图

  7. 7

    如何使自定义键盘与Swift一起使用

  8. 8

    如何制作自定义键盘布局?

  9. 9

    如何制作自定义键盘布局?

  10. 10

    如何激活自定义键盘布局

  11. 11

    如何显示自定义键盘

  12. 12

    如何激活自定义键盘布局

  13. 13

    JavaScript:如何清除我的自定义键盘映射并使用默认键盘映射

  14. 14

    如何为我的应用程序创建自定义键盘

  15. 15

    如何为Android自定义键盘设置不同的按键背景

  16. 16

    如何为嵌套菜单项添加自定义键盘快捷键?

  17. 17

    如何为嵌套菜单项添加自定义键盘快捷键?

  18. 18

    自定义键盘中handleInputModeList的正确实现

  19. 19

    android中图像的自定义键盘实现

  20. 20

    自定义键盘视图框架返回0

  21. 21

    带有自定义键盘视图按钮的浓缩咖啡

  22. 22

    如何在自定义键盘按钮swift中实现功能齐全的退格键

  23. 23

    自定义键盘间距

  24. 24

    如何在 UIAlert 出现时显示键盘,其中带有自定义 UITextLabel 视图的 UIAlert

  25. 25

    如何在Windows 8中使用通过Microsoft键盘布局创建器创建的自定义键盘布局?

  26. 26

    如何在Xcode 5中自定义默认键盘

  27. 27

    如何用俄语字母创建自定义键盘?

  28. 28

    如何在自定义位置打开Tabtip键盘?

  29. 29

    如何在Windows中删除自定义键盘布局?

热门标签

归档