Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中创建自定义键盘_Android_Keyboard_Android Softkeyboard - Fatal编程技术网

在Android中创建自定义键盘

在Android中创建自定义键盘,android,keyboard,android-softkeyboard,Android,Keyboard,Android Softkeyboard,我想写一个自定义键盘,它应该可以在所有运行安卓4.0及更高版本的设备上使用。所以首先我搜索了一下网络,但是没有找到任何关于这个的信息。那么,我如何才能创建一个应用程序来取代Android的普通键盘呢 我想知道的是: 有好的教程吗?你们有样本代码吗 我需要根来做这个吗 它背后的结构是什么?(这只是一项有服务的常规活动吗??) 可以读出键盘内的输入框吗 所以首先我搜索了一下网络,但没有找到任何关于这个的信息 在Internet上的中介绍了如何创建输入法 你们有样本代码吗 如果您从SDK管理器下载了示

我想写一个自定义键盘,它应该可以在所有运行安卓4.0及更高版本的设备上使用。所以首先我搜索了一下网络,但是没有找到任何关于这个的信息。那么,我如何才能创建一个应用程序来取代Android的普通键盘呢

我想知道的是:

  • 有好的教程吗?你们有样本代码吗
  • 我需要根来做这个吗
  • 它背后的结构是什么?(这只是一项有服务的常规活动吗??)
  • 可以读出键盘内的输入框吗
  • 所以首先我搜索了一下网络,但没有找到任何关于这个的信息

    在Internet上的中介绍了如何创建输入法

    你们有样本代码吗

    如果您从SDK管理器下载了示例代码,则SDK安装的
    samples/
    目录中有一个示例。查找
    软键盘

    我需要根来做这个吗

    没有

    它背后的结构是什么?(这只是一项有服务的常规活动吗??)


    是的。

    所以,我在Swype上工作了大约两年。您不需要root,只需要实现InputMethodService。您可以从大多数文本框中获取文本,但不是所有文本框(并非所有编辑字段都能正确实现其一半的API。尤其是任何输入类型为input_type_NULL的文本都无法正常工作)。要获取文本,请调用inputConnection.getExtractedText

    请注意——API不好,应用程序在使用它时经常出错。一个基本的键盘很简单,但是尝试做任何复杂的事情,你会花很多时间。大量的工时都花在了大键盘上

  • 有好的教程吗?你们有样本代码吗
  • 这是一个很好的教程:

  • 我需要根来做这个吗
  • 否,不需要root用户来执行此操作

  • 它背后的结构是什么?(这只是一项有服务的常规活动吗??)
  • 您需要使用
    inputMethodService
    ,请参阅

  • 可以读出键盘内的输入框吗
  • 根:没有

    可以读出键盘内的输入框吗

    是的,这是可能的

    InputConnection ic = getCurrentInputConnection();
    String currentText = ic.getExtractedText(new ExtractedTextRequest(), 0).text;
    

    嗯,在开发人员文档中没有找到它,顺便问一下@commonware这个主题在你的一本书中涉及吗?@safari:没有,对不起。它在列表中,但优先级不高,因为它是一个相当专业的主题。好吧=),最后一个问题,我是否可以读出我在inputbox中写的内容(edittext,无论什么),然后替换它?@safari:我不熟悉
    InputMethodService
    如何编辑现有文本,对不起。@commonware:谢谢你的回答。我使用过软键盘(在android sdk示例中给出)。但是自动建议栏没有显示在键盘上。我怎样才能在软键盘上显示自动提示词呢?好吧,所以当我想在键盘上放一些喷丝板之类的东西,让用户更改文本时,这就变得非常困难了?我说的对吗?或者我可以在那里叠加一个新的布局吗?所以框架的这一部分背后的想法是,你将实现整个键盘敲击、预测等等。这包括绘图。因此,添加微调器不应该是一个问题,尽管您是一个服务,但IME可以设置UI(唯一这样的服务)。所以只需在布局中放置微调器。如果你只是想要一个没有预测的标准键盘,Android有很多帮助,但我不确定有多少-我们做了所有定制,我们的布局只是一个定制视图,我们自己绘制。好吧,我来试一试,顺便说一句,除了来自谷歌的软键,你还知道其他的示例代码吗?可能有一两个小教程,但不多。如果你进入AOSP代码,你可能会发现android的键盘。它过去被称为“拉丁语”。这是你最好的例子,你可以根据自己的喜好修改。谢谢。什么是
    根目录:否
    ?请编辑你的帖子。@CoolMind他的问题是我是否需要根设备来实现这样的事情,答案是否定的,里面没有可以编辑的内容。如果你再次看到你的答案,你会注意到,答案是2。你在第四题中又重复了一遍。相关: