【问题标题】:SearchView needs to be clicked twice to openSearchView 需要点击两次才能打开
【发布时间】:2016-06-08 19:14:06
【问题描述】:

我正在关注这个Android tutorial 来实现搜索视图。解决了一些问题后,我开始工作了。但是,搜索视图需要单击两次才能打开 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>

【问题讨论】:

  • 为什么不用SearchViewv7,兼容性更强,好用:developer.android.com/intl/es/reference/android/support/v7/…
  • 哦,现在可以正常使用了,谢谢!
  • 自我注意,完全忽略这一点:“注意:此类包含在支持库中是为了与 API 级别 7 及更高级别兼容。如果您正在为 API 级别 11 及更高级别开发应用程序,您应该改用框架 SearchView 类。”无论如何,支持 V7 是必经之路
  • 可能没有使用 v7,因为开发人员文档developer.android.com/training/search/setup 不使用它。正如@Mohsen 所说,您应该使用 v7

标签: android searchview


【解决方案1】:

回答可能为时已晚,但让我们完成这项工作。就像我说的,最好使用:

app:actionViewClass="android.support.v7.widget.SearchView"

为了更多的兼容性等等。但重点是,在新的AndroidX 中,我们不能使用android.support,因为我们迁移到AndroidX,并且只有:

app:actionViewClass="android.widget.SearchView"

可用。但是,让我们看看文档对最新 API (AndroidX) 等的说明:

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

所以在AndroidX,我发现:

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

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

【讨论】:

  • 非常感谢,从 app:actionViewClass="android.widget.SearchView" 替换为 app:actionViewClass="androidx.appcompat.widget.SearchView" 对我有用。
猜你喜欢
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2016-12-15
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多