如何在Android工具栏中设置图标的颜色?

时间:2016-12-07 06:46:39

标签: android material-design android-toolbar

我从https://github.com/nglauber/playground/tree/master/android/DemoSearch

分叉了一个GitHub项目

我想将搜索图标的颜色设置为纯白色。目前,搜索图标为灰色,明显不同于“演示搜索”的白色文字。

Toolbar Search Icon in Gray Color

编辑:

基于一些建议,我使用纯白色(确切地说,RGB = 255,255,255)创建了一个新图标,并使用它代替android:ic_menu_search。 Android将使用灰色调(使用屏幕截图中的颜色选择工具进行验证)对其进行着色,即使原始图标为纯白色。

这告诉我Android正在故意调整图标。我希望有一些方法可以控制设置或更改Android工具栏中的图标颜色

Toolbar Search Icon in Gray Color

4 个答案:

答案 0 :(得分:6)

我找到了自己问题的答案。我决定将其记录下来以便能够帮助其他Android开发人员。

简短的回答是是的,我们可以在Android工具栏中维护图标颜色,我们需要通过导入资源

来实现
  • SVG
  • PNG,图标类型为启动器图标

SVG PNG with icon type as Launcher Icons

我遇到的原始问题是由于

  • PNG,图标类型为操作栏和标签图标

在此设置中,Android Studio Image Asset会在保存到res项目文件夹时因某种未知原因稍微更改图标颜色。当Android最终显示在屏幕上时,Android将进一步更改图标颜色。最终结果是我在问题中描述的内容,原始纯白色图标将变为灰色。

如果我们使用带有图标类型的SVG或PNG作为启动器图标,则图标将不会有颜色更改。该图标将能够保留其原始颜色。这让我相信它是Android Studio中的错误,而不是设计指南帮助。

PNG with icon type as Action Bar and Tab Icons

Stack Overflow post报道了类似的观察结果。 @markj报道“结果图像只是无用的灰色形状”。

生成的Android环境截图

维持颜色

SVG(SVG) PNG with icon type as Launcher Icons(PNG作为启动器图标)

颜色已更改

PNG with icon type as Action Bar and Tab Icons(PNG作为操作栏和标签图标)

答案 1 :(得分:0)

您必须制作白色图标并将其添加到res / menu`文件中的menu_search.xml

目前是android:icon="@android:drawable/ic_menu_search"。但是你可以在这里使用自己的图标。然后,您可以在android:icon="@drawable/ic_menu_search"文件中将其写为res/menu

答案 2 :(得分:0)

你必须使用菜单。将searchView添加为菜单中的项目

<?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/menu_search"
    android:title="Search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="ifRoom"
    android:orderInCategory="1"
    android:menuCategory="secondary"
    android:visible="true"

    />

</menu>

并在您的活动中覆盖此方法

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    menuItem = menu.findItem(R.id.menu_search);
    searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
    searchView.setIconifiedByDefault(true);

    //get search icon View and set your drawable
    ImageView icon = (ImageView)searchView.findViewById(R.id.search_button);
    icon.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_search_white_24dp));




    return true;
}

答案 3 :(得分:0)

您只需更改为使用支持库中的SearchView类

imgUrl