Android的文本和输入之创建输入法教程
输入法编辑器(ime)是让用户输入文本的控件。android提供了一个可扩展的的输入法的框架,它允许应用程序给用户提供另外的输入法,如软键盘或语音输入。这些输入法一旦安装,用户就可以从系统的设置中选择他们想要使用的ime,并且这个设置对整个系统都是有效的,每次只有一种输入法是可用的。
要在android系统中添加一种输入法,你就要创建一个包含继承了inputmethodservice类的类应用程序。另外,你通常还要创建一个“settings”activity,把选项传递给ime服务。你还可以定义一个用于设置的ui,让它做为系统设置的一部分来显示。
本文包含以下内容:
1. ime的生命周期。
2. 在应用程序的清单中声明ime组件;
3. ime api
4. 设计ime的ui
5. 从ime中把文本发送给应用程序
6. 使用ime子类型
ime的生命周期
下图介绍ime的生命周期:
图1.ime的生命周期
下列章节介绍如何实现ui以及代码如何跟这个生命周期相关联。
在清单中生命ime组件
在android系统中,ime是一个包含了特殊ime服务的android应用程序。应用程序的清单文件必须声明服务、申请必要的权限、提供跟action.view.inputmethod操作相匹配的intent过滤器、以及定义ime的特性的元数据。另外,还要提供一个设置界面,允许用户用它来编辑ime的行为,你可以定义一个从系统设置中能够启动的“settings”的activity。
以下清单片段声明了ime服务。它申请了允许把服务连接到系统的ime的bind_input_method权限,建立了一个跟android.view.inputmethod操作相匹配的intent过滤器,并且给ime定义了元数据:
<!-- declares the input method service -->
<service android:name="fastinputime"
android:label="@string/fast_input_label"
android:permission="android.permission.bind_input_method">
<intent-filter>
<action android:name="android.view.inputmethod" />
</intent-filter>
<meta-data android:name="android.view.im" android:resource="@xml/method" />
</service>
接下来给ime声明了用于设置的activity。它有一个action_main类型的intent过滤器,这指明了该activity是ime应用程序的主入口:
<!-- optional: an activity for controlling the ime settings -->
<activity android:name="fastinputimesettings"
android:label="@string/fast_input_settings">
<intent-filter>
<action android:name="android.intent.action.main"/>
</intent-filter>
</activity>
你还可以在这个设置的ui中提供对ime设置的直接访问。
推荐阅读
-
Android的文本和输入之创建输入法教程
-
Android开发教程之获取系统输入法高度的正确姿势
-
Android程序打开和对输入法的操作(打开/关闭)
-
Android的文本和输入之创建输入法教程
-
Android实现输入法弹出时把布局顶上去和登录按钮顶上去的解决方法
-
Android更改EditText下划线的颜色样式和动态获取输入的字数的代码教程
-
Android开发教程之获取系统输入法高度的正确姿势
-
054自定义控件之创建一个仅输入数值的文本框
-
Android实现输入法弹出时把布局顶上去和登录按钮顶上去的解决方法
-
Android Studio 界面布局之xml文件中给输入框editText修改下划线颜色 / 为按钮设置圆角和颜色 / 约束布局预览效果和运行效果不一致 问题的解决