Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如果用户按下设备的搜索按钮,则在ActionBar中显示SearchWidget大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我按照 Android API Guide中的描述设置了一个SearchWidget.它在Action Bar中正确显示一个放大镜图标,如果我点击它,它会在Action Bar(一个深色背景的输入字段)中启动搜索小部件.

但是,如果我按下虚拟设备的搜索按钮,则会启动另一个搜索字段:它具有白色背景,并且不会调用我指定的回调@L_801_10@.

所以我把它添加到我的MainActivity类:

public Boolean onSearchrequested() {
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setIconified(!searchView.isIconified());
    return false;
}

搜索小部件的设置与文档中描述的完全相同:

SearchManager searchManager = (SearchManager) getSystemservice(Context.SEARCH_serviCE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
searchView.setOnQueryTextListener(new CustomSearchQueryTextListener());

我的searchable.xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://scheR_492_11845@as.android.com/apk/res/android"
    android:label="@String/app_name">
</searchable>

和AndroidManifest.xml:

<activity
        android:name="MainActivity"
        android:label="@String/app_name"
        android:launchMode="singleTask"
        android:uiOptions="splitActionBarWhenNarrow" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <Meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
    </activity>

我尝试使用setIconfied()@L_801_10@的原因是,在Android API指南中,它说“切换搜索框可见性的能力”:

我也尝试调用startSearch(“”,false,null,falsE);但这会带来与白色背景相同的搜索字段.

所以我的问题是:如果用户按下设备的搜索按钮,是否可以在操作栏中启动搜索小部件,即执行与单击搜索菜单项完全相同的操作?

解决方法

在写这个问题时,我自己提出了解决方案.我仍然决定将它与答案一起发布,因为之前似乎没有问过这个问题,也许有人遇到同样的问题和/或提出了更好的解决方案.

您需要做的就是在搜索菜单项上调用expandActionView(),一切都按预期工作:

public Boolean onSearchrequested() {
    menu.findItem(R.id.menu_search).expandActionView();
    return true;
}

大佬总结

以上是大佬教程为你收集整理的android – 如果用户按下设备的搜索按钮,则在ActionBar中显示SearchWidget全部内容,希望文章能够帮你解决android – 如果用户按下设备的搜索按钮,则在ActionBar中显示SearchWidget所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。