我SearchView
中的片段 ActionBar
。问题是,当我第一次触摸图标时,它向左移动(扩展SearchView
)。然后我必须再次触摸它以获取文本字段。下面的图片将澄清更多。
requestFocusFromTouch();
requestFocus();
setIconifiedByDeafault(false);
setIconified(); //Works but opens keypad even before touching searchview
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>
最初:
触摸一次:(展开)
再次触动:(专注)
答案 0 :(得分:6)
如果您使用的是appcompat-v7
,则需要使用其版本SearchView
(android.support.v7.widget.SearchView
)。混合和匹配与本机操作栏和appcompat-v7
后端相关联的内容通常不起作用。
您对使用原生ActionBar和SearchView的建议是什么?
您考虑使用appcompat-v7
有三个主要原因:
您需要一致的操作栏,并且minSdkVersion
低于11,因此您需要一个向后移植的操作栏。
您想尝试在Android 4.x上采用Material Design-ish外观,因为appcompat-v7
会为您提供一个操作栏,以及一些看起来更像Theme.Material
的小部件1}}对应物。
您遇到了本机操作栏实施的问题,可能是由于制造商的错误导致选择设备问题,并且您希望使用更独立的操作栏实现来避免这些问题。
< / LI> 醇>如果这三个原因都没有引人注目,请随意使用原生操作栏和原生SearchView
。