如何从底部导航视图更改特定图标图像
How to change a specific icon image from Bottom Navigation View
我需要在我的 android 应用程序中实现底部导航视图。中间的图标需要是图片,公司标志。但是当我 运行 该应用程序时,它只显示一个灰色填充的圆形图标。上面的图片显示了我想要的和我得到的。
我想要的:
我得到的:
我已经尝试过本网站中的其他问题,但每个答案都告诉我用可绘制对象从 XML 更改 iconTintList,但中心图标是一个具有多种颜色的矢量。
当我尝试将 null 设置为 setIconTintList 方法时,适用于中间图标,但其他图标也更改为原始颜色。
//This doesn't work to other icons, only for the middle one
mBottomNav.setItemIconTintList(null);
我也试过获取菜单并仅为中间那个设置图标色调列表,就像上面的代码一样,但也不起作用。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mBottomNav.getMenu().findItem(R.id.nav_buy).setIconTintList(null);
}
这是 XML 实现:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/kmv_background"
app:itemIconTint="@drawable/bottom_nav_item_color"
app:itemTextColor="@drawable/bottom_nav_item_color"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_navigation" />
这是 java 实现:
mBottomNav = findViewById(R.id.bottomNavigationView);
mBottomNav.setOnNavigationItemSelectedListener(this);
感谢您的帮助!
我认为没有捷径可走。先用这个:
mBottomNav.setItemIconTintList(null);
那就自己设计吧。不要忘记将按钮区分为已单击和未单击。
主页按钮示例 XML
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--Clicked-->
<item android:drawable="@drawable/homeclicked" android:state_checked="true" />
<!--Not Clicked-->
<item android:drawable="@drawable/homenotclicked" android:state_checked="false" />
</selector>
并将它们添加到视图中:
例子bottom_navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/homebuttons"
android:icon="@drawable/homebuttonxml />
<!--Other Buttons...-->
</menu>
最后,Link 查看 bottomnavigationview
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:labelVisibilityMode="unlabeled"
app:elevation="0dp"
app:menu="@menu/bottom_navigation">
</com.google.android.material.bottomnavigation.BottomNavigationView>
我需要在我的 android 应用程序中实现底部导航视图。中间的图标需要是图片,公司标志。但是当我 运行 该应用程序时,它只显示一个灰色填充的圆形图标。上面的图片显示了我想要的和我得到的。
我想要的:
我得到的:
我已经尝试过本网站中的其他问题,但每个答案都告诉我用可绘制对象从 XML 更改 iconTintList,但中心图标是一个具有多种颜色的矢量。
当我尝试将 null 设置为 setIconTintList 方法时,适用于中间图标,但其他图标也更改为原始颜色。
//This doesn't work to other icons, only for the middle one
mBottomNav.setItemIconTintList(null);
我也试过获取菜单并仅为中间那个设置图标色调列表,就像上面的代码一样,但也不起作用。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mBottomNav.getMenu().findItem(R.id.nav_buy).setIconTintList(null);
}
这是 XML 实现:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/kmv_background"
app:itemIconTint="@drawable/bottom_nav_item_color"
app:itemTextColor="@drawable/bottom_nav_item_color"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_navigation" />
这是 java 实现:
mBottomNav = findViewById(R.id.bottomNavigationView);
mBottomNav.setOnNavigationItemSelectedListener(this);
感谢您的帮助!
我认为没有捷径可走。先用这个:
mBottomNav.setItemIconTintList(null);
那就自己设计吧。不要忘记将按钮区分为已单击和未单击。
主页按钮示例 XML
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--Clicked-->
<item android:drawable="@drawable/homeclicked" android:state_checked="true" />
<!--Not Clicked-->
<item android:drawable="@drawable/homenotclicked" android:state_checked="false" />
</selector>
并将它们添加到视图中: 例子bottom_navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/homebuttons"
android:icon="@drawable/homebuttonxml />
<!--Other Buttons...-->
</menu>
最后,Link 查看 bottomnavigationview
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:labelVisibilityMode="unlabeled"
app:elevation="0dp"
app:menu="@menu/bottom_navigation">
</com.google.android.material.bottomnavigation.BottomNavigationView>