【问题标题】: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 运行良好。但它看起来很旧。您对使用原生 ActionBarSearchView 有何建议?

标签: android android-actionbar fragment searchview


【解决方案1】:

如果您使用的是appcompat-v7,则需要使用其版本的SearchView (android.support.v7.widget.SearchView)。混合和匹配与本机操作栏和 appcompat-v7 反向端口相关的内容通常不起作用。

您对使用原生 ActionBar 和 SearchView 有何建议?

您可能会考虑使用appcompat-v7 的三个主要原因:

  1. 您需要一个一致的操作栏,而您的 minSdkVersion 小于 11,因此您需要一个向后移植的操作栏。

  2. 1234563 .
  3. 您在本机操作栏实现方面遇到了问题,可能是由于制造商的错误而在某些设备上,您希望使用更独立的操作栏实现来避免这些问题。

如果这三个原因都不令人信服,请随意使用原生操作栏和原生 SearchView

【讨论】:

  • 完美答案。谢谢。
猜你喜欢
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 2012-04-22
  • 2020-03-06
  • 1970-01-01
相关资源
最近更新 更多