如何使 Android BottomNavigationView 背景透明?

Posted

技术标签:

【中文标题】如何使 Android BottomNavigationView 背景透明?【英文标题】:How to Make Android BottomNavigationView Background Transparent? 【发布时间】:2021-01-07 07:58:18 【问题描述】:

我一直在尝试使 BottomNavigationView 的背景透明,以便可以通过它看到背景,但是当我尝试以编程方式和通过 xml 设置具有 0% alpha 的背景颜色或具有相同颜色的可绘制对象时,背景变成这样:

BottomNavigationView 背景透明:

我希望背景完全透明,不像图片中显示的那样。

这是 BottomNavigationView 的 XML:

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_nav"
    android:layout_
    android:layout_
    app:layout_scrollFlags="scroll|enterAlways"
    android:layout_gravity="bottom"
    app:menu="@menu/bottom_nav"
    android:background="#00000000"
    app:itemBackground="#00000000"
    app:itemIconTint="@color/hintcolor"
    app:itemTextColor="@android:color/white"
    app:itemHorizontalTranslationEnabled="false"/>

这是整个 XML 文件的代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".NavigationDrawerActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_
        android:layout_
        app:layout_scrollFlags="scroll|enterAlways"
        android:theme="@style/AppTheme.AppBarOverlay">
        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_
            android:layout_
            android:background="?attr/colorPrimary"
            app:titleTextColor="?attr/text"
            app:layout_anchor="@+id/appBarLayout"
            app:layout_anchorGravity="center"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
    </com.google.android.material.appbar.AppBarLayout>
    <include layout="@layout/content_navigation_drawer"/>
    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_nav"
        android:layout_
        android:layout_
        app:layout_scrollFlags="scroll|enterAlways"
        android:layout_gravity="bottom"
        app:menu="@menu/bottom_nav"
        android:background="#00000000"
        app:itemBackground="#00000000"
        app:itemIconTint="@color/hintcolor"
        app:itemTextColor="@android:color/white"
        app:itemHorizontalTranslationEnabled="false"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

【问题讨论】:

抱歉,我不能发图片,请复制粘贴图片链接。 试试这个link的答案 请将您的 XML 布局添加到问题中。 @MdBasha 我已经尝试过该链接,我已将 backgroundcColor 和 itemBackgroundColor 设置为透明,其结果如帖子链接中的图片所示。 @Rajasekhar 我已经用 BottomNavigationView 的 XML 更新了答案,谢谢 【参考方案1】:

标题后面的背景覆盖是因为底部导航栏的高度。要删除它,请添加此属性。

app:elevation="0dp"
android:alpha="0.5"

移除使视图透明的背景颜色。

android:background="#00000000"

你也可以试试

android:elevation="0dp"

【讨论】:

感谢您的建议,但这不起作用,它确实去除了阴影和轮廓,但背景变成了白色,我正在寻找至少某种程度的透明度。 所以你告诉你需要可滚动背景在底部导航视图后面仍然可见,以便部分可见而不是完全透明并具有一定的高度。 透明或半透明任何东西都可以,只要我可以通过 BottomNavigationView 看到背景,但现在背景是纯白色,即使分配的 backgroundColor 是透明的并且所有高程都是 0dp 那么您只需将 alpha 设置为 0.5 或更低。现在我可以看到 recyclerview 滚动和部分可见的背景。还要删除背景颜色#00000000,这会使视图完全透明。 设置 Alpha 将为整个视图设置透明度,包括按钮等元素。起作用的是将您的答案结合在一起,我将背景颜色和项目背景颜色设置为透明,并将所有高程降低到 0dp。即使在分配透明颜色后它仍然是纯白色的原因是片段和底部导航视图之间的边距,因此片段中的背景甚至没有到达底部导航视图。感谢您抽出宝贵时间回复并提供答案。干杯。【参考方案2】:

你可以试试:

navigationView.getBackground().setAlpha(122); 在这里您可以将不透明度设置在 0(完全透明)到 255(完全不透明)之间。

您还可以使用采用双精度值的 XML 值 alpha。

范围为0f到1f(含),0f为透明,1f为不透明:

android:alpha="0.0" 不可见

android:alpha="0.5" 透视

android:alpha="1.0" 完全可见

【讨论】:

感谢您的回答,只需按照您的建议分配透明颜色或设置背景 alpha 即可。干杯。

以上是关于如何使 Android BottomNavigationView 背景透明?的主要内容,如果未能解决你的问题,请参考以下文章

Android实战项目 仿微信底部导航栏

如何在 Android 上使背景透明 20%

如何使android中对话框的背景透明?

如何在android中使底部导航栏不透明?

如何使 android 活动方向坚持起始值?

如何使AlertDialog List可滚动Android [重复]