使用support-v7-appcompat在ActionBar中搜索SearchView

phi*_*ity 9 eclipse android android-support-library

我一直在努力使用support-v7库让SearchView小部件在操作栏中展开.当我的目标是4.0+时,我设法让它在没有支持库的情况下工作,但我想编写2.3+的应用程序,所以我需要使用支持库.我使用以下menu.xml创建了一个空白的新活动:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>
    
<item
    android:id="@+id/action_search"
    android:icon="@android:drawable/ic_menu_search"
    yourapp:showAsAction="always"
    yourapp:actionViewClass="android.support.v7.widget.SearchView"
    android:title="Search"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

这甚至没有显示搜索按钮,更不用说在点击时展开它了.它只是将搜索添加到菜单中,而不是在操作栏中显示. 使用appcompat库(不起作用)

或者我在没有appcompat库的情况下尝试了相同的操作,我只需将menu.xml替换为:

<item
    android:id="@+id/action_search"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="always"
    android:actionViewClass="android.widget.SearchView"
    android:title="Search"/>
Run Code Online (Sandbox Code Playgroud)

它工作得很好,甚至可以在点击时扩展到搜索文本输入小部件. 在此输入图像描述

我希望在使用appcompat库时第二张图片中的searchview可用,但由于某种原因它似乎不起作用.我正在使用eclipse,并且我已经在支持库中包含了完全按照支持库设置[developer.android.com]中指定的资源.

我的清单文件有minsdk版本为7,targetsdk版本为18,构建目标也是18.

我怀疑支持库设置有问题,有人可以告诉我我可能做错了什么吗?谢谢!

Vol*_*kiv 16

也许SearchView并没有表现出因为你错过添加collapseActionView这一行:yourapp:showAsAction="always".

此外,您的活动必须延伸AppCompatActivity.因此,将AppCompat库添加到项目中

您可以在此链接上阅读更多详细信息

希望它会对你有所帮助.