首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >导航抽屉项图标不显示原始颜色

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

Stack Overflow用户
提问于 2015-07-14 06:04:49
回答 9查看 90.6K关注 0票数 147

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

MainActivity.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>

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-08-14 06:05:19

我在这里找到了答案: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>
票数 371
EN

Stack Overflow用户

发布于 2016-10-06 20:27:26

使用

    mNavigationView.setItemIconTintList(null);

这是正确的。另外,如果你所有的图标都在一个配色方案中(我用的是全白的),你可以通过xml文件-app:itemIconTint=“@android: color /白色”进行设置。

我的案例:

<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"
    />
票数 53
EN

Stack Overflow用户

发布于 2015-07-14 13:22:34

我已经在我的一个应用程序中尝试过类似的东西。是的,看起来图标的颜色并没有改变。但我已经设法解决了另一个问题。这是我的ic_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);

而且它似乎起作用了。结果如下所示。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31394265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档