【问题标题】:Android studio navigation drawer icon colorAndroid studio 导航抽屉图标颜色
【发布时间】:2016-12-22 19:14:37
【问题描述】:

我所有的片段都使用红色操作栏,所以白色的导航抽屉图标看起来不错。但是对于一个片段,我需要不可见的白色操作栏和抽屉图标。所以我必须将抽屉图标更改为红色。但我找不到如何做到这一点。

如何将图标变为红色?

【问题讨论】:

    标签: android android-actionbar navigation-drawer


    【解决方案1】:

    为您需要的活动创建这样的样式styles.xml

    <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="color">@color/red</item>
    </style>
    

    然后像这样将它添加到您的活动主题中:

    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
    

    【讨论】:

    • 这是可行的,但我有一个活动和许多片段。一些带有红色动作条的片段和一个带有白色的片段。如果我将它添加到活动主题抽屉图标将到处都是红色的,不仅在带有白色操作栏的片段中
    • 如果您只想使用默认图标 toolbar.getNavigationIcon().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY); 更改颜色,可以使用此代码并将其添加到您在活动中添加具有所需颜色的片段的位置
    • toolbar.getNavigati‌​onIcon() 返回空值。只有当我使用setNavigationIcon 方法手动设置它时,它才会返回drawble。但我不知道手动设置默认菜单图标的名称。
    • 我没有设置任何导航图标。但它在我的设备上工作正常
    • 将该代码放在初始化并创建DrawerLayout 之后。即设置导航监听器后
    【解决方案2】:

    希望这会有所帮助,因为它对我有用。

    Drawable myDrawable = context.getResources().getDrawable(R.drawable.menu); 
    mDrawable.setColorFilter(new 
    PorterDuffColorFilter(0xffff00,PorterDuff.Mode.MULTIPLY));
    

    【讨论】:

    • 我使用默认菜单图标。我可以从@android:drawable 得到它吗?我不想使用自定义图标
    • 您可以将其粘贴到您的 mainActivity 中。这可能是您的解决方案。 //设置可绘制图像 ic_menu 以在操作栏中打开可绘制。最终的 ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeAsUpIndicator(R.drawable.ic_menu); actionBar.setDisplayHomeAsUpEnabled(true);
    【解决方案3】:

    Link 1 (Recommended)

    Link 2

    只需按照这些链接中的说明进行操作即可。您的问题将得到解决。

    【讨论】:

    • 请避免只发布外部链接。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅适用于 OP,而且适用于 SO 的未来访问者。
    • 好的,下次我回答某人时我会记住。谢谢你告诉我
    【解决方案4】:

    我自己一直在尝试这样做,并通过反复试验得出以下结论

    drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    toggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.open, R.string.close);
    
    int color = getResources().getColor(getResources().getIdentifier("red", "color", getPackageName()));
    toggle.getDrawerArrowDrawable().setColor(color);
    

    我个人更喜欢这种方法,因为您可以将“red”替换为完全适合我需要的变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      相关资源
      最近更新 更多