【问题标题】:having problem when set backgroundTintColor of Snackbar to a color with alpha is not 1将 Snackbar 的背景色调颜色设置为具有 alpha 的颜色时出现问题不是 1
【发布时间】:2021-03-23 05:17:04
【问题描述】:

当我使用下面的代码显示snackbar 时:

 Snackbar
            .make(findViewById(R.id.drawer_layout), message, Snackbar.LENGTH_SHORT)
            .setTextColor(Color.BLACK)
            .setBackgroundTint(snackbarMessageType.color)
            .show()
enum class SnackbarMessageType(val color: Int) {
    WARNING(Color.HSVToColor(80, floatArrayOf(0f,0.84f,1f))),
    NOTIFICATION(Color.HSVToColor(80, floatArrayOf(106f,0.84f,1f)))

}

在我的snackbar 下显示一个白色块。

我将snackbar 锚定在我的drawer layout 上。

drawer layout 自带的东西,还是只是代码有问题?

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?attr/background"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/colorPrimary"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:itemIconTint="@color/colorPrimaryDark"
        app:itemTextAppearance="@style/TextAppearance.AppCompat.Medium"
        app:itemTextColor="?attr/colorOnBackground"
        app:menu="@menu/activity_main_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>

【问题讨论】:

    标签: android android-snackbar


    【解决方案1】:

    当涉及到带有 alpha 的背景颜色时,默认 BackgroundTintMode 似乎存在一些错误。 找到了一种方法来克服将 BackgroundTintMode 设置为 PorterDuff.Mode.SRC_OVER

     snackbar.setBackgroundTintMode(PorterDuff.Mode.SRC_OVER)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 2017-02-16
      • 2011-05-16
      • 2011-04-24
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多