在我的应用程序中,我正在使用带有自定义SearchView的Action Bar。我想在用户点击搜索字段中的输入按钮时使用一些自定义代码。但我无法找到一种方法来捕捉用户点击SearchView中的输入按钮。
现在我尝试了几种捕获搜索操作的方法,但我似乎无法找到它。
我的按钮定义如下:
<item
android:id="@+id/action_bar_search"
android:title="Search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="-package-.CustomSearchView"
/>
这属于CustomSearchView类:
public class CustomSearchView extends SearchView implements OnClickListener, android.view.View.OnKeyListener{
public CustomSearchView(Context context) {
super(context);
this.setOnSearchClickListener(this);
this.setSubmitButtonEnabled(true);
this.setOnClickListener(this);
this.setOnKeyListener(this);
}
@Override
public void onClick(View v) {
Log.d("SEARCH", "Onclick! " + this.getQuery());
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.d("SEARCH", "Search onkey");
return false;
}
}
在这里你可以看到我尝试了两种方法:
有没有人有办法使用此SearchView进行自定义搜索操作?
更新:
如下面PJL所述:您不需要自定义对话框来覆盖此行为。普通的SearchView小部件可以正常工作。
答案 0 :(得分:46)
获取搜索视图并添加OnQueryTextListener
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Do something
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// Do something
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
顺便说一下,我的菜单布局如下:
<item android:id="@+id/menu_search"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView" />