【问题标题】:Change Toolbar color/style on SearchView click更改 SearchView 上的工具栏颜色/样式单击
【发布时间】:2016-04-04 02:51:27
【问题描述】:

我有一个简单的问题。

点击搜索图标时如何将工具栏的颜色/或主题更改为白色?

每当单击搜索图标时,我希望工具栏为白色(带有黑色/灰色后退箭头)。我在 MenuItem 中添加了 SearcView (android.support.v7.widget.SearchView)

这个

当点击返回按钮时,工具栏颜色会变回原来的颜色。

【问题讨论】:

  • 也许你可以给SearchView添加一个监听器,当它展开时,改变Toolbar的颜色。
  • 在点击搜索图标时使用搜索视图打开带有白色编辑文本的可搜索活动希望你已经阅读了这个developer.android.com/guide/topics/search/search-dialog.html
  • 我看到了那个链接,但它与我所问的无关。

标签: android android-toolbar


【解决方案1】:

Activity/Fragment代码中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_menu, menu);

    MenuItem searchMenuItem = menu.findItem(R.id.search);
    if (searchMenuItem == null) {
        return true;
    }

    searchView = (SearchView) searchMenuItem.getActionView();
    MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            // Set styles for expanded state here
            if (getSupportActionBar() != null) {
                getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.RED));
            }
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Set styles for collapsed state here
            if (getSupportActionBar() != null) {
                getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.BLUE));
            }
            return true;
        }
    });

    return true;
}

而实际menu的xml是:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/search"
        android:title="@string/search_title"
        android:icon="@drawable/ic_menu_search"
        app:showAsAction="always|collapseActionView"
        app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>

要更改展开视图的后退/X 按钮的颜色,请将其添加到您的样式中:

<item name="colorControlNormal">@color/my_great_color</item>

要使颜色变化更平滑 - 您可以对其进行动画处理:Animate change of view background color on Android

希望对你有帮助

【讨论】:

  • 谢谢!你提到的是部分工作。后退箭头虽然存在但不可见,但后退箭头和背景颜色相同
  • @FaizanMubasher 添加了屏幕截图 - 后退箭头保持不变,绝对可见。不过,您始终可以按照以下提示更改它的颜色:stackoverflow.com/questions/26788464/…(也在 onMenuItemActionExpand 和 onMenuItemActionCollapse 中)
  • 你是对的!实际上,我正在将颜色从 Blue 更改为 White,这就是为什么后退箭头似乎不可见的原因。此外,SearchView 中的文本颜色也是白色的。无论如何,谢谢。
  • 它不工作兄弟。后退箭头图标颜色不变。
  • @FaizanMubasher 我的错 - 我找到了一个可行的解决方案 - 将 &lt;item name="colorControlNormal"&gt;@color/my_great_color&lt;/item&gt; 添加到您的样式中。 (更新了答案)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2015-11-21
相关资源
最近更新 更多