EditText搜索框和软键盘弹出问题

场景


最近做项目,用到了几个管与edittext相关的属性,做个记录


1.让edittext不自动弹出软键盘

项目页面上有一个查询框,用edittext写的,每次进入页面都默认弹出软键盘,因为每次进入页面它会默认获取到焦点,所以解决的办法就不让它获取焦点

    android:focusableInTouchMode="true"

将这句代码复制到edittext的父控件上,将焦点给到他父控件,可以解决

另外网上查到的方法还有

在清单文件里,对应activity中加入

android:windowSoftInputMode="stateHidden" 

让edittext永远弹不出软键盘

edit.setInputType(InputType.TYPE_NULL); 

2.搜索框会用到对内容的监听

监听有两种

(1)使用textWatcher,自己写一个监听,继承textWatcher

public class MyEditTextChangeListener implements TextWatcher {
    /**
     * 编辑框的内容发生改变之前的回调方法
     */
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }
    /**
     * 编辑框的内容正在发生改变时的回调方法 >>用户正在输入
     * 我们可以在这里实时地 通过搜索匹配用户的输入
     */
    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }
    /**
     * f
     * 编辑框的内容改变以后,用户没有继续输入时 的回调方法
     */
    @Override
    public void afterTextChanged(Editable editable) {

    }
}

(2)OnEditorActionListener,对软键盘的回车键点击的监听

  edit.setSearchTopEditListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent  event) { 
            if (event != null) {
       // 此处有switch,是因为点击回车的时候,按下和抬起都会触发该监听,此处我选择的Down,因为不知道为什么按下的监听event总是返回null
                switch (event.getAction()) {
                    case KeyEvent.ACTION_DOWN:

                        searchAndShow(v);

                        return true;
                    default:
                        return true;
                }
            }
            return false;//返回true,保留软键盘。false,隐藏软键盘
        }
    });

3.让edittext弹出的软键盘改变回车键的字样

做的搜索框,弹出的软键盘必然是搜索的样式,而不是一个回车的样式! 这里用到edittext的imeOptions属性

软键盘下方变成"搜索"
android:imeOptions="actionSearch" 

软键盘下方变成“完成”
android:imeOptions="actionDone" 

软键盘下方变成“发送”
android:imeOptions="actionSend" 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值