导航抽屉项目图标未显示原始颜色
Navigation drawer item icon not showing original colour
我试图在我的抽屉式导航菜单中的项目旁边显示一个图标,但由于某种原因,该图标始终显示为灰色,而不是原始颜色(棕色)。有什么方法可以防止这种情况发生以显示图标的原始颜色吗?
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>
您可以尝试使用有色可绘制对象,不确定在 5.0 以下是否有效。
创建一个可绘制对象并添加以下代码。
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_browncircle"
android:tint="@color/brownColor"/>
然后将可绘制的菜单项更改为您刚刚创建的菜单项。如果这不起作用,那么我不确定是否有任何其他解决方案。你可以试试这个库:https://github.com/mikepenz/MaterialDrawer我在我的项目中经常使用它。
我在我的一个应用程序中尝试过类似的东西。是的,图标颜色似乎没有改变。但我已经设法解决了另一种解决方法。这是我的 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);
它似乎有效。这是结果。
我在这里找到了答案:
为了避免 link 它非常简单:
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>
使用
mNavigationView.setItemIconTintList(null);
没错。另外,如果您所有的图标都采用一种配色方案(我全是白色)
您可以通过 xml 文件进行设置 - 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"
/>
只需在xml中添加一行
app:itemIconTint="@color/white"
添加这个
android:tint="@color/colorPrimary"
如果您使用 Android Studio
提供的导航抽屉创建项目。在您的 Main Activity class 中,您只需将这行代码 navigationView.setItemIconTintList(null);
添加到您的 onCreate
方法中即可。像这样;
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null); // <----- HERE
setupDrawerContent(navigationView);
有些代码无法正常工作
MainActivity.java
NavigationView.setItemIconTintList(null); // not working
所以你可以使用它。
MainActivity.java
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null); // <-- HERE add this code for icon color
我找到了解决方案。
1) 转到“设计”选项卡
2) 点击 navView
3) 在属性中搜索 itemicontint
4) 写入 null
并按 Enter
BottomNavigationView navigationbtn = findViewById(R.id.bottomNavigationView);
BottomNavigationMenuView mbottomNavigationMenuView =
(BottomNavigationMenuView) navigationbtn.getChildAt(0);
View view3 = mbottomNavigationMenuView.getChildAt(2);
BottomNavigationItemView itemView3 = (BottomNavigationItemView) view3;
itemView3.setIconTintList(null);
我试图在我的抽屉式导航菜单中的项目旁边显示一个图标,但由于某种原因,该图标始终显示为灰色,而不是原始颜色(棕色)。有什么方法可以防止这种情况发生以显示图标的原始颜色吗?
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>
您可以尝试使用有色可绘制对象,不确定在 5.0 以下是否有效。
创建一个可绘制对象并添加以下代码。
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_browncircle"
android:tint="@color/brownColor"/>
然后将可绘制的菜单项更改为您刚刚创建的菜单项。如果这不起作用,那么我不确定是否有任何其他解决方案。你可以试试这个库:https://github.com/mikepenz/MaterialDrawer我在我的项目中经常使用它。
我在我的一个应用程序中尝试过类似的东西。是的,图标颜色似乎没有改变。但我已经设法解决了另一种解决方法。这是我的 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);
它似乎有效。这是结果。
我在这里找到了答案:
为了避免 link 它非常简单:
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>
使用
mNavigationView.setItemIconTintList(null);
没错。另外,如果您所有的图标都采用一种配色方案(我全是白色) 您可以通过 xml 文件进行设置 - 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"
/>
只需在xml中添加一行
app:itemIconTint="@color/white"
添加这个
android:tint="@color/colorPrimary"
如果您使用 Android Studio
提供的导航抽屉创建项目。在您的 Main Activity class 中,您只需将这行代码 navigationView.setItemIconTintList(null);
添加到您的 onCreate
方法中即可。像这样;
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null); // <----- HERE
setupDrawerContent(navigationView);
有些代码无法正常工作 MainActivity.java
NavigationView.setItemIconTintList(null); // not working
所以你可以使用它。
MainActivity.java
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null); // <-- HERE add this code for icon color
我找到了解决方案。
1) 转到“设计”选项卡
2) 点击 navView
3) 在属性中搜索 itemicontint
4) 写入 null
并按 Enter
BottomNavigationView navigationbtn = findViewById(R.id.bottomNavigationView);
BottomNavigationMenuView mbottomNavigationMenuView =
(BottomNavigationMenuView) navigationbtn.getChildAt(0);
View view3 = mbottomNavigationMenuView.getChildAt(2);
BottomNavigationItemView itemView3 = (BottomNavigationItemView) view3;
itemView3.setIconTintList(null);