ActionBar中的SaerchView显示图标两次而没有自动对焦.这是为什么?

pri*_*ank 2 android fragment android-actionbar searchview

我有一个SearchView片段ActionBar.问题是当我第一次触摸图标时它向左移动(扩展SearchView).然后我必须再次触摸它以获取文本字段.下面的图片将澄清更多.

我已经尝试过的:

requestFocusFromTouch();
requestFocus();
setIconifiedByDeafault(false);
setIconified(); //Works but opens keypad even before touching searchview
Run Code Online (Sandbox Code Playgroud)

代码:

片段的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;
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

图片:

原来:

触摸一次:(扩展)

再次感动:(专注)

Com*_*are 6

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

您对使用本机ActionBar和SearchView的建议是什么?

您可以考虑使用以下三个主要原因appcompat-v7:

  1. 您需要一致的操作栏,并且您minSdkVersion的成绩低于11,因此您需要一个向后移动的操作栏.

  2. 您想尝试在Android 4.x上采用Material Design-ish外观和感觉,因为它appcompat-v7会为您提供一个操作栏,以及一些看起来更像Theme.Material对应的小部件.

  3. 您遇到了本机操作栏实现的问题,可能是由于制造商的错误而导致选择设备出现问题,并且您希望使用更独立的操作栏实现来避免这些问题.

如果这三个原因都没有引人注目,请随意使用本机操作栏和本机SearchView.