我无法在底部导航中更改非活动颜色
这是我的xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/home_item"
android:icon="@drawable/ic_home"
android:color="#FFFFFF"
android:tint="#FFFFFF"
android:backgroundTint="#FFFFFF"
android:title="Home"
/>
<item
android:id="@+id/setting_item"
android:icon="@drawable/ic_setting"
android:color="#FFFFFF"
android:tint="#FFFFFF"
android:backgroundTint="#FFFFFF"
android:title="Setting"
/>
这是我的java
bottomBar.getBar().setBackgroundColor(getResources().getColor(R.color.bottom_tabs));
bottomBar.setActiveTabColor("#FFFFFE");
任何人都可以帮忙吗?
答案 0 :(得分:38)
如果您使用BottomNavigationView,解决方案可能很简单。 您只需要将选择器创建为ColorStateList,然后将选择器分配给BottomNavigationView的“itemIconTint”属性。
例如:
在drawable中创建文件
<强> bottom_nav_icon_color_selector.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@android:color/white" />
<item android:state_pressed="true" android:state_enabled="true" android:color="@android:color/white" />
<item android:color="@color/InactiveBottomNavIconColor" />
</selector>
<强> BotttomNavigationview.xml 强>
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomNavMainMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/BottomNavBarColor"
app:itemIconTint="@drawable/bottom_nav_icon_color_selector"
app:itemTextColor="@drawable/bottom_nav_icon_color_selector"
app:menu="@menu/bottom_navigation_menu" />
答案 1 :(得分:0)
尝试以下代码。希望对您有帮助!
function testFunction() {
var x = Math.floor(Math.random() * 10) + 1;
document.getElementById("randnum").innerHTML = x;
}
答案 2 :(得分:0)
Chrislis answer是一个好的开始。但是我喜欢通过样式和主题来解决这个问题。在此示例中,我还使用了新材料BottomNavigationView。
在颜色文件夹下创建一个新文件,例如:bottom_nav_item_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/item_color_active" android:state_checked="true"/>
<item android:color="@color/item_color_inactive"/>
</selector>
将此行添加到位于themes.xml
<item name="bottomNavigationStyle">@style/BottomNavigationViewStyle</item>
将此代码添加到styles.xml
<style name="BottomNavigationViewStyle" parent="Widget.MaterialComponents.BottomNavigationView.Colored">
<item name="android:background">@color/my_background_color</item>
<item name="itemTextColor">@color/bottom_nav_item_color</item>
<item name="itemIconTint">@color/bottom_nav_item_color</item>
</style>
现在应该正确设置BottomNavigationView的样式
布局文件示例
<com.google.android.material.bottomnavigation.BottomNavigationView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schema.android.com/apk/res/res-auto"
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_gravity="start"
app:menu="@menu/my_navigation_items" />
答案 3 :(得分:0)
我稍微编辑了@Wirling 答案以匹配 Android Studio 4.2 Canary 16。
您只需在颜色文件夹下定义您的活动/非活动颜色,例如 bottom_nav_item.color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/item_color_active" android:state_checked="true"/>
<item android:color="@color/item_color_inactive"/>
</selector>
然后,在您的BottomNavigationView 中使用之前创建的选择器,如下所示
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:itemIconTint="@color/bottom_nav_item_color"
app:itemTextColor="@color/bottom_nav_item_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_nav_menu" />
所以它超级简单。你必须在新的 .xml 文件中创建你的选择器,然后将它用于你的 BottomNavigationView
app:itemIconTint="@color/bottom_nav_item_color"
app:itemTextColor="@color/bottom_nav_item_color"
答案 4 :(得分:0)
<!-- Base application theme. -->
<style name="Theme.RunnerApp"
parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/white</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?
attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
在大多数情况下...开发人员将主题更改为 NoActionBar 但不是 Theme.MaterialComponents.DayNight.NoActionBar 他们把它改成 Theme.AppCompat.DayNight.NoActionBar 这导致了所有这些颜色问题
导航组件使用材料设计,所以请记住这一点