【问题标题】:Unable to make DrawerLayout background to transparent in Samsung s8+无法在三星 s8+ 中使 DrawerLayout 背景透明
【发布时间】:2018-08-06 11:15:25
【问题描述】:

我在我的应用程序中使用 DrawerLayout。我正在使用 NavigationView 作为导航抽屉的内容,并使用下面的代码片段将其背景设置为透明。

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="start|center"
    android:background="@android:color/transparent">

</android.support.design.widget.NavigationView>

在三星 s8+ 中,当我打开抽屉时,它会在末尾显示一个竖线。当我从 NavigationView 中删除透明度时进行调试时,我了解到三星 s8+ 包含一个灰色条以及一个背景。当我在 Red mi 3s 上​​部署相同的代码时,它运行良好,只是有背景。

三星 s8+ 抽屉柜

Redmi 3s 抽屉柜

三星s8+抽屉bg透明

红米3s抽屉bg透明

请帮我去掉这个竖条。

【问题讨论】:

  • 您是否也可以在模拟器上尝试一下,以了解三星 S8+ 是否通过添加灰色条而表现不同,或者 RedMi 是否通过删除条而表现不同。除此之外,尝试将视图的高度设置为 0dp。
  • @mtiidla 我没有检查模拟器,无论它是否工作。我将高度设置为 0dp,但它不起作用。
  • @mtiidla 当我将高度设置为 0dp 时,灰色边框会出现在左侧而不是右侧,但是一旦我再次旋转设备,它就会向右移动,如果再次旋转,它就会向左移动。
  • 好的。还有一个想法,我想你使用 DrawerLayout 类。它也有自己绘制的阴影。您也许可以使用 DrawerLayout.setDrawerShadow(null, Gravity.xyz) 和 setDrawerElevation(0)
  • @mtiidla 是的,我正在使用 DrawerLayout,我尝试了 setDrawerShadow() 和 setDrawerElevation() 但这也不起作用。

标签: android android-layout drawerlayout


【解决方案1】:

我现在无法运行代码。不过我相信这会奏效。

navigationView.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SOURCE);

【讨论】:

  • .@Anees navigationView.getBackground() 返回 Drawable 并且没有 setBackgroundColor() 方法。我的意思是说上面的语句给出了编译问题。
  • .@Anees,我试过 navigationView.getBackground().setColorFilter(Color.TRANSPARENT, PorterDuff.Mode.SRC);但代码片段不起作用。
【解决方案2】:

setDrawerShadow 在 22.1.0 版本中添加 void setDrawerShadow (Drawable 阴影可绘制, int Gravity) 设置用于左阴影或右阴影的简单可绘制对象。提供的可绘制对象必须具有非零内在 宽度。对于 API 21 及更高版本,将在抽屉上设置高度 而不是使用提供的阴影drawable。

请注意,为了更好地支持从左到右和从右到左 布局方向,用于 RTL 布局的可绘制对象(除了 在 LTR 布局中)可以使用资源限定符“ldrtl”定义 API 17 及以上,重力启动。或者,对于 API 23 和 上面,drawable 可以自动镜像,这样drawable 将是 在 RTL 布局中镜像。

https://developer.android.com/reference/android/support/v4/widget/DrawerLayout#setDrawerShadow(int,%20int)

透明颜色创建一个颜色可绘制或矩形形状R.drawable.trans 然后像这样使用它:

navigationDrawer.setDrawerShadow(R.drawable.trans, GravityCompat.END);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2012-09-23
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多