创建安卓搜索框一般有两种方法,使用EditText控件或使用SearchView控件;因为SearchView自由度和效果感觉没有EditText好,建议使用EditText控件;SearchView建议与ToolBar和menu配合使用。
1. EditText
EditText制作搜索框只需要使用setOnEditorActionListener()方法设置一个编辑活动监听器,当检测到键盘输入为搜索或回车时执行指定搜索活动。
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
if(i== EditorInfo.IME_ACTION_SEARCH |(keyEvent != null && keyEvent.getAction() == KeyEvent.ACTION_DOWN && keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER)){
//执行搜索
return true;
}
return false;
}
});
建议对EditText控件进行的设置有:
最大行数(maxLines)
回车变搜索(imeOperation="actionSearch")(如果进行了该设置,那么编辑活动监听器只需要监听搜索即可)请注意,设置该属性一定要设置inputType属性,否则无效。
输入提示(hint)
输入类型(inputType)
<EditText
... ...
android:hint="输入提示"
android:imeOptions="actionSearch"
android:maxLines="1" />
2.SearchView
一般不推荐直接使用SearchView,建议与Toolbar和menu配合使用。
直接使用如下:
<androidx.appcompat.widget.SearchView
... ...
app:iconifiedByDefault="true" //是否默认为图标化
app:queryHint="输入提示-需要点开后(非图标化)才显示"/>
searchView.setOnSearchClickListener(new View.OnClickListener() {
public void onClick(View view) {
//执行搜索
}
});
与Toolbar和menu配合使用如下: