Android-一键实现搜索栏



我正在尝试在我的应用程序的主要活动上实现搜索栏。为此,我使用了Android开发人员网站的文档。

我遵循说明,我有搜索栏,我可以在其中放一些查询。这里的问题是,在我第一次尝试进行搜索时,我必须在搜索图标上单击2次。

首先,我的酒吧看起来像一个默认的:默认搜索栏

我注意到图标显然不是白色,就像其中有一定的透明度,但我选择了一个完整的白色图标。

然后单击图标后,我的栏看起来像这样:搜索栏单击一次

图标向左走,我已经在搜索字段中有一个后按钮。

再次单击搜索图标时,我终于得到了我想要的结果:在编辑模式下搜索栏

当我退出搜索栏并再次执行此操作时,相同的是1或2次,然后,我的行为正常,我从第一个图像到最后一个单击。

这是我的文件:

菜单_app.xml

<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/search"
    android:title="@string/search"
    android:icon="@drawable/ic_search"
    app:showAsAction="collapseActionView|ifRoom"
    app:actionViewClass="android.widget.SearchView" />
</menu>

androidmanifest.xml

    <activity
        android:name=".activities.MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.SEARCH"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
    </activity>

searchable.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search"/>

mainActivity.java

increateoptionsmenu
    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    // Associate searchable configuration with the SearchView
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    final SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            Log.d(TAG, s);
            searchView.clearFocus();
            return true;
        }
        @Override
        public boolean onQueryTextChange(String s) {
            Log.d(TAG, s);
            return false;
        }
    });
    return true;
}

预先感谢您的帮助!

我终于解决了它,请查看我的解决方案评论。

相关内容

  • 没有找到相关文章

最新更新