android 导航视图似乎改变了背景颜色

qnakjoqk  于 2023-05-05  发布在  Android
关注(0)|答案(4)|浏览(181)

我想让我的导航视图的背景是#121212,但它变成了一个更轻的灰色。但是,当应用相同的颜色作为背景时,视图中的项目具有正确的颜色显示。

android:background="@color/navview"
app:itemBackground="@color/navview"

测试项的背景设置为与导航视图背景相同的颜色,但是颜色存在惊人的差异,如下所示。

导航视图背景上是否有过滤器?我试过把背景色调模式设为空,

nvView.backgroundTintMode = null

但似乎没有效果。任何帮助是赞赏!

编辑:

<androidx.drawerlayout.widget.DrawerLayout

    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:id="@+id/navigation_drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/navview"
    android:fitsSystemWindows="true">

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nvView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:background="@color/navview"
        app:itemBackground="@color/navview"

        app:menu="@menu/toolbar_menu">

    </com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>

我的导航视图的背景颜色不正确,项目的背景颜色正确。我想要的颜色是#121212。

lmvvr0a8

lmvvr0a81#

NavigationView中,使用**itemShapeFillColor**属性填充项目,并使用android:background作为菜单视图的背景。
在布局中:

<com.google.android.material.navigation.NavigationView
    android:background="#121212"
    app:itemShapeFillColor="@color/..."
    ../>

(我只是在选中的项目上使用alpha来突出显示它)
您也可以使用样式:

<style name="..." parent="Widget.MaterialComponents.NavigationView" >
   <item name="itemShapeFillColor">@color/....</item>
</style>

关于itemBackground的一点说明。
在默认样式中,设置为@null,以在设置**itemShapeAppearance和/或itemShapeAppearanceOverlay时使用由NavigationView以编程方式生成的形状背景。
此背景使用
itemShape***属性(如itemShapeFillColoritemShapeInsetStart...)设置样式。
设置itemBackground将覆盖编程背景,并导致itemShape*属性中设置的值被忽略。

qnzebej0

qnzebej02#

您可以使用以下代码片段设置导航视图的背景色

navView.setBackgroundColor(ContextCompat.getColor(this,R.color.yourColor)) // yourColor is 
                                                                           // #121212
csga3l58

csga3l583#

在我的情况下,被接受的答案并不能解决我所需要的,以及我所理解的问题所要求的:防止NavigationView修改提供的背景颜色。
如果其他人需要这个,我通过向Navigation视图添加以下属性来实现:

android:backgroundTintMode="add"
android:backgroundTint="#000"

这将禁用应用于背景的色调,因为它会将0添加到当前颜色。

monwx1rj

monwx1rj4#

另一种解决方法是将DrawerLayout高程设置为0dp

<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:elevation="0dp" <!-- here -->
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/appbar_layout"
    tools:openDrawer="start">

 <!-- Another view -->

 <com.google.android.material.navigation.NavigationView
  ...
  ...
  android:background="@color/nav_color" />

 </androidx.drawerlayout.widget.DrawerLayout>

然后,您将获得NavigationView的正确颜色

相关问题