当前位置: 首页 > 知识库问答 >
问题:

导航抽屉项目图标不显示原始颜色

孙梓
2023-03-14

我试图在导航抽屉菜单中的一个项目旁边显示一个图标,但由于某些原因,图标总是显示为灰色,而不是原始颜色(棕色)。为了显示图标的原始颜色,有什么方法可以防止这种情况发生吗?

主要活动。Java语言

public class MainActivity extends AppCompatActivity {

    private DrawerLayout mDrawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        if (navigationView != null) {
            setupDrawerContent(navigationView);
        }
    }

    private void setupDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                mDrawerLayout.closeDrawers();

                return true;
            }
        });
    }
}

drawer_view.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="Section">
        <menu>
            <item
                android:id="@+id/navigation_item_1"
                android:icon="@drawable/ic_browncircle"
                android:title="Sub item 1" />
        </menu>
    </item>
</menu>

共有3个答案

仲孙逸明
2023-03-14

我在我的一个应用程序中尝试过类似的东西。是的,图标的颜色似乎没有改变。但我设法找到了另一个解决办法。这是我的ic\u browncircle。xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:tint="@color/brown"
    >
  <size
      android:height="3dp"
      android:width="3dp"
      />
  <solid android:color="@color/brown"/>
</shape>

我相信它和你很相似,但它没有任何效果,也不会改变颜色。

所以我做的是这个。

navigationView.getMenu()
    .findItem(R.id. navigation_item_1)
    .getIcon()
    .setColorFilter(Color.parseColor("#b69260"), PorterDuff.Mode.SRC_ATOP);

这似乎很有效。结果如下。

穆正祥
2023-03-14

使用

    mNavigationView.setItemIconTintList(null);

没错。此外,如果您的所有图标都是一种配色(我有全白色),您可以通过xml file进行设置-app: itemIconTint="@android: Color/White"

我的案例:

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:clickable="true"
    app:headerLayout="@layout/nav_header_main"
    app:itemTextColor="@android:color/white"
    app:menu="@menu/activity_main_drawer"
    android:background="@android:color/black"
    app:itemIconTint="@android:color/white"
    />
哈翔
2023-03-14

我在这里找到了答案:https://stackoverflow.com/a/30632980/875249

为了避免链接,它非常简单:

    mNavigationView.setItemIconTintList(null);

这将禁用所有基于状态的着色,但您也可以指定自己的列表。它对我很有用!

下面是创建颜色状态列表的详细信息,但也很简单:http://developer.android.com/reference/android/content/res/ColorStateList.html

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" android:color="@color/primary" />
        <item android:state_checked="false" android:color="@android:color/white" />
    </selector>
 类似资料:
  • 我正在为我的应用程序实现一个导航抽屉。现在,除了一个小故障外,它工作正常。当我设置导航抽屉图标(ic_Drawer)来替换常规的“HomeAsUp”插入符号图标时,我仍然得到箭头。导航抽屉图标不显示。我已经实现了android开发者网站上的每一种方法。但它似乎不起作用。 以下是我的代码:

  • 在sherlock actionbar中使用导航抽屉,但我无法让3行图标(像gmail一样)显示出来,而不是正常的向上按钮“<”。这是我的代码ic_drawer是gmail使用的3行图标

  • 我正在用最新的appcompat支持库实现Lollipop风格的导航抽屉,但问题是汉堡包图标从未显示。仅显示后退图标。 这是我的活动代码 这是我的样式文件 布局文件 在这两种情况下,只有返回箭头显示,我读了很多帖子,但似乎没有什么不同。任何帮助都将不胜感激。

  • 我在我的应用程序中使用了可以在android工作室添加的抽屉菜单,我在导航抽屉中添加了一些菜单条目(参见代码块)。如果我按下第一个项目(nav_home)或第二个,导航抽屉会突出显示当前按下的项目。 如果我按下项目“nav_information”按钮或其他项目,则会打开新的(单击的)片段,并且看不到突出显示(主页或第二个项目仍突出显示) 很快,只有第一个项目在选定的项目上显示突出显示。 这是我处

  • 我有一个导航抽屉应用程序,我需要从应用程序的主屏幕开始。。我有一个问题,当我启动应用程序时,它总是从抽屉菜单的第一项活动开始。。我怎样才能使应用程序从主屏幕开始,主屏幕不在抽屉菜单中,而不是第一项活动!!! 主要活动 导航抽屉碎片 维护。xml 闪屏

  • 抽屉打开正常并正确显示,但当我单击列表中的项目时什么都没有发生。这是我从谷歌教程(UDACITY)中获取的代码。 我希望它能帮助你。 我做的一切都和教程视频完全一样。