为什么使用 collapseActionView 属性后 Searchview 的搜索图标没有显示?

3

我正在创建Android工具栏中的搜索视图,但无论何时,只要我在menu.xml项目中提到collapseActionView属性,就会出现以下问题:

<item android:id="@+id/search"
    android:title="@string/search_title"
    app:showAsAction="always|collapseActionView"
    app:actionLayout="@layout/search_view_layout"/>

这里的search_view_layout.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
 <android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="35dp"/>

在这种情况下,我的searchView看起来如下图所示: enter image description here 在上面的图片中,搜索图标不会出现。当我点击这个搜索标题SearchView Open as时,它会打开: enter image description here 我不明白为什么不隐藏Kart菜单项,并且不从style.xml导入任何样式属性。
<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
    <item name="queryBackground">@color/white</item>
    <item name="searchIcon">@drawable/search</item>
    <item name="goIcon">@drawable/ic_search</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:layout_height">35dp</item>
    <item name="android:height">35dp</item>

我希望设计的搜索界面如下所示:

应用程序所需的搜索界面

欢迎提出任何建议。

1个回答

0
在你的菜单中添加。
    <item
    android:id="@+id/search"
    android:icon="@drawable/ic_search"
    android:title="@string/search"
    yourapp:showAsAction="ifRoom|collapseActionView"
    yourapp:actionViewClass="android.support.v7.widget.SearchView"
    />

在你的Java类中

   SearchManager searchManager = (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
   SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();

    searchView.setSearchableInfo(searchManager.getSearchableInfo(((AppCompatActivity) context).getComponentName()));
    searchView.setIconifiedByDefault(false); 
    searchView.setOnQueryTextListener(this);

要应用样式,请在您的style.xml中添加以下内容

  <style name="MyToolbar" parent="AppTheme">
   <item name="searchViewStyle">@style/searchStyle</item>
  </style>

 <style name="searchStyle" parent="Widget.AppCompat.SearchView.ActionBar">
    <item name="queryHint">@string/search</item>
    <item name="searchIcon">@null</item>
    <item name="colorControlActivated">@color/accent</item>
    <item name="colorControlNormal">@color/accent</item>
</style>

最后,在您的工具栏中应用上述主题。
  <android.support.v7.widget.Toolbar
            android:id="@+id/my_toolbar"
            android:layout_width="match_parent"
            android:minHeight="?attr/actionBarSize"
            android:theme="@style/MyToolbar"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            >
        </android.support.v7.widget.Toolbar>

感谢您的帮助,但它只显示普通的搜索视图。我已经完成了这个。我想创建像附加图像那样的搜索视图。请仔细查看我的搜索视图样式。 - Sandeep Tiwari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接