ActionBar 中的 SearchView 显示图标两次且未获得自动对焦。这是为啥?
Posted
技术标签:
【中文标题】ActionBar 中的 SearchView 显示图标两次且未获得自动对焦。这是为啥?【英文标题】:SaerchView in ActionBar showing icon twice and not getting auto focus. Why is that?ActionBar 中的 SearchView 显示图标两次且未获得自动对焦。这是为什么? 【发布时间】: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
有何建议?
【参考方案1】:
如果您使用的是appcompat-v7
,则需要使用其版本的SearchView
(android.support.v7.widget.SearchView
)。混合和匹配与本机操作栏和 appcompat-v7
反向端口相关的内容通常不起作用。
您对使用原生 ActionBar 和 SearchView 有何建议?
您可能会考虑使用appcompat-v7
的三个主要原因:
您需要一个一致的操作栏,而您的 minSdkVersion
小于 11,因此您需要一个向后移植的操作栏。
您在本机操作栏实现方面遇到了问题,可能是由于制造商的错误而在某些设备上,您希望使用更独立的操作栏实现来避免这些问题。
如果这三个原因都不令人信服,请随意使用原生操作栏和原生 SearchView
。
【讨论】:
完美答案。谢谢。以上是关于ActionBar 中的 SearchView 显示图标两次且未获得自动对焦。这是为啥?的主要内容,如果未能解决你的问题,请参考以下文章