Android 需要单击SearchView两次才能打开

Android 需要单击SearchView两次才能打开,android,searchview,Android,Searchview,下面我将实现搜索视图。在解决了一些问题后,我让它开始工作。但是,需要单击搜索视图两次才能打开editText。知道发生了什么吗 过滤器类别: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar_menu_filter, menu); // Associate searchable configuration with the Sear

下面我将实现搜索视图。在解决了一些问题后,我让它开始工作。但是,需要单击搜索视图两次才能打开editText。知道发生了什么吗

过滤器类别:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.toolbar_menu_filter, menu);

    // Associate searchable configuration with the SearchView
    SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =
            (SearchView) menu.findItem(R.id.menu_item_search).getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    searchView.setQueryHint(getResources().getString(R.string.search_hint));

    return super.onCreateOptionsMenu(menu);
}
菜单.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".FilterUI">

<item android:id="@+id/menu_item_search"
    android:title="Search"
    android:icon="@drawable/ic_search_white"
    app:actionViewClass="android.widget.SearchView"
    app:showAsAction="ifRoom|collapseActionView"/>

<item android:id="@+id/menu_item_options"
    android:icon="@drawable/ic_clear_all_white"
    app:showAsAction="ifRoom"
    android:title="@string/filter_default"/>

清单文件

<activity android:name=".Activities.FilterUI"
        android:screenOrientation="portrait"
        android:configChanges="orientation"
        android:windowSoftInputMode="adjustNothing">

        <meta-data android:name="android.app.searchable"
            android:resource="@xml/searchable" />

    </activity>

    <activity android:name=".Activities.SearchActivity">

        <intent-filter>
            <action android:name="android.intent.action.SEARCH"/>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

回答可能太晚了,但是,让我们完成这项工作。正如我所说,最好使用:

app:actionViewClass="android.support.v7.widget.SearchView"
为了获得更多的兼容性等。但关键是,在新的
AndroidX
中,我们不能使用
android。支持
,因为我们迁移到
AndroidX
,只有:

app:actionViewClass="android.widget.SearchView"
可用。但是,让我们看看最新API(AndroidX)等的文档说明:

注意:包含在支持库中,以与API级别7及更高版本兼容。如果你正在开发你的 应用程序仅适用于API 11级及更高级别,您应改为使用 框架
android.widget.SearchView
class

因此,在AndroidX中,我发现:

app:actionViewClass="androidx.appcompat.widget.SearchView"

要使用,但您仍然可以使用:
android.widget.SearchView

为什么不使用
SearchView
v7,更具兼容性和易用性:哦,它现在工作正常,谢谢!请注意,完全忽略这一点:“注意:该类包含在支持库中,以与API级别7及更高版本兼容。如果您仅为API级别11及更高版本开发应用程序,则应改用framework SearchView类。”支持V7是一个不错的选择,因为开发人员文档不使用V7,所以可能没有使用V7。你应该像@Mohsen所说的那样使用v7,将app:actionViewClass=“android.widget.SearchView”替换为app:actionViewClass=“androidx.appcompat.widget.SearchView”适合我。