场景
最近做项目,用到了几个管与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"