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

xiaoxiao2021-02-28  14

场景


最近做项目,用到了几个管与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"
转载请注明原文地址: https://www.6miu.com/read-1650312.html

最新回复(0)