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

问题描述 投票:1回答:4

我从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

android material-design android-toolbar
4个回答
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 as Launcher Icons)

颜色改变了

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


0
投票

你必须制作白色图标并将其添加到menu_search.xmlin res / menu`文件中。

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


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;
}

0
投票

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

<item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_search_white_24dp"
        android:orderInCategory="2"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />
© www.soinside.com 2019 - 2024. All rights reserved.