小编Ale*_*dro的帖子

imeOptions,imeActionId和imeActionLabel的行为

我是Android原生开发的新手,我正在试图弄清楚如何自定义IME动作按钮.我查看了Google文档,但我发现很少有关于预期行为的信息.

官方指南中我了解到可以使用以下属性配置键盘操作按钮:

  • android:imeOptions可以将空格键附近显示的按钮的文本/ id设置为一些预定义的值(例如actionGo将键标签设置为Go,id设置为2)
  • android:imeActionLabel设置键盘全屏时显示在输入区域内的按钮的标签,通常是横向模式.可以设置为任何字符串值.
  • android:imeActionId与之前相同,但设置传递给回调方法的数字Id

但经过一些经验尝试后,我发现API级别15和下一个API级别之间存在不同的行为.

我已经设置了一个具有以下属性的简单EditText元素:

<EditText
        ...
        android:imeOptions="actionGo"
        android:imeActionLabel="Custom"
        android:imeActionId="666"
        android:inputType="text"/>
Run Code Online (Sandbox Code Playgroud)

我已经在纵向和横向模式下检查了不同API级别的效果.这是结果.

API级别15 - 4.0.3

在纵向模式下,键标签为Go,传递给回调方法的操作ID为2,因此与imeOptions设置相对应.

在横向模式下,键标签/ id为Go/2作为纵向模式,而输入区域中显示的按钮为Custom/666,相应于imeActionLabel和imeActionId属性.

API级别16,17和18 - 4.1.2,4.2.2和4.3

在纵向和横向模式下,键和按钮都显示为自定义标签,并绑定到666 id,忽略imeOptions属性.

这种行为的不匹配非常烦人,因为:

  • API级别> = 16时无法区分键按钮和输入区域按钮
  • API级别= 15时,您无法为键按钮设置任何自定义文本.

你知道如何在API 15和16+中获得这个吗?或者,如果有一种方法可以在API版本的所有(或至少部分)中获得一致的行为?

也许我在IME设置中遗漏了一些可以证明不同行为的东西......

非常感谢你!

android android-input-method

44
推荐指数
3
解决办法
4万
查看次数

标签 统计

android ×1

android-input-method ×1