【发布时间】:2015-07-04 20:47:41
【问题描述】:
我有一个SearchView 用于ActionBar 中的一个片段。问题是当我第一次触摸它向左移动的图标时(扩展SearchView)。然后我必须再次触摸它以获取文本字段。下面的图片会更清楚。
我已经尝试过的:
requestFocusFromTouch();
requestFocus();
setIconifiedByDeafault(false);
setIconified(); //Works but opens keypad even before touching searchview
代码:
Fragment的onPrepareOptionsMenu()和onCreateOptionsMenu():
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_search, menu);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
SearchView searchView = (SearchView)menu.findItem(R.id.search).getActionView();
searchView.setIconified(false);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
mAdapter.getFilter().filter(newText);
return false;
}
});
}
menu_search.xml
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/search"
android:title="@string/search_title"
android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="android.widget.SearchView"/>
</menu>
图片:
最初:
触摸一次:(扩展)
再次触摸:(专注)
【问题讨论】:
-
您似乎混合使用了原生操作栏 (
SearchView) 和appcompat-v7操作栏 (app:showAsAction) 功能。 选择一个并坚持下去。 -
我正在使用来自 support-v7 的
ActionBarActivity。 -
然后切换到
android.support.v7.widget.SearchView。 -
好的,问题解决了。
SearchView运行良好。但它看起来很旧。您对使用原生ActionBar和SearchView有何建议?
标签: android android-actionbar fragment searchview