【问题标题】:Is is possible to have rounded background of selected Bottom Navigation item?是否可以选择底部导航项的圆形背景?
【发布时间】:2021-08-16 18:04:38
【问题描述】:

这就是我想要实现的目标(圆角):

这是我卡在的地方(角不圆):

主要活动 xml:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_navigation"
    style="@style/CustomBottomNavigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:menu="@menu/bottom_navigation_menu"
    app:itemBackground="@color/bottom_navigation_bar_background_color"
    app:itemTextColor="@color/bottom_navigation_bar_content_color"
    app:itemIconTint="@color/bottom_navigation_bar_content_color"/>

颜色/bottom_navigation_background_color.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="@color/background_selected" />
    <item android:state_checked="false" android:color="@color/background" />
</selector>

颜色/bottom_navigation_content_color:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/text_active" android:state_checked="true" />
    <item android:color="@color/text_inactive" />
</selector>

【问题讨论】:

  • 如果你不想处理尝试自定义它,你可以尝试创建一个自定义底栏,并使用 CardViews + Ripple 效果来实现你想要的。

标签: java android bottomnavigationview


【解决方案1】:

我认为问题在于您尝试使用颜色而不是可绘制对象。

在可绘制文件夹中创建一个名为 background_menu_item.xml 的 xml,其内容为:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/nav_bar_colors_bg" />
    <corners android:radius="120dp" />
</shape>

在颜色文件夹中创建另一个名为 nav_bar_colors_bg.xml 的 XML,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/navBarActiveIconColor" android:state_checked="true" />
    <item android:color="@color/navBarInactiveIconColor" android:state_checked="false"/>
</selector>

然后在你有底部导航视图的xml中添加:

app:itemBackground="@drawable/background_menu_item"

如果您也想更改图标颜色,请添加:

app:itemIconTint="@drawable/nav_bar_colors"

并在可绘制文件夹中创建一个 nav_bar_colors.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/navBarInactiveIconColor" android:state_checked="true" />
    <item android:color="@color/navBarActiveIconColor" android:state_checked="false" />
</selector>

还要确保 android:background 是您的非活动颜色以与材料设计保持一致:

android:background="@color/navBarActiveIconColor"

注意:命名可能会更好我知道 + 所以我的回复不正确,由于没有时间我宁愿删除它,但现在格式化后我无法取消删除它,所以我再次发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2018-01-14
    • 2019-02-16
    • 2017-04-02
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多