关于软键盘上回车键问题

imyyq 2015-09-06 10:59:48
在xml布局文件中,有个EditText控件,设置属性:
android:imeOptions="actionSearch"

在对应的Activity中,设置监听:

etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener()
{
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if (actionId == EditorInfo.IME_ACTION_SEARCH)
{
// 在这里做搜索操作
return true;
}
return false;
}
});



问题来了:
如上操作没问题吧?我在小米3中,软键盘的回车键可以变成“搜索”,也可以成功监听到,但是为什么换成小米2,回车键一样变成“搜索”,但是却不能监听到?点击搜索压根没效果
...全文
139 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
imyyq 2015-09-08
  • 打赏
  • 举报
回复
小米2,系统4.1.1 JRO03L,输入法:搜狗输入法小米版V2.2,无法监听到回车键,actionID总是0,无论如何设置都是0。下面是解决方法:
etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener()
        {
            /**
             * 因为部分机型的输入法,无法监听回车键,这里的例子是:小米2,系统4.1.1 JRO03L,输入法:搜狗输入法小米版V2.2。
             * 无论怎么设置EditText控件的android:imeOptions,其actionId都为0,而且onEditorAction会被响应两次。
             * 因此需要以下标记,来去掉第二次响应
             */
            boolean b = true;

            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
            {
                if (b)
                {
                    b = false;
                    if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_UNSPECIFIED)
                    {
                        // TODO 在这里做你想要的操作
                        return true;
                    }
                }
                else
                {
                    b = true;
                }
                return false;
            }
        });
imyyq 2015-09-07
  • 打赏
  • 举报
回复
大神们,有人知道为啥吗?在线等

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧