代码之家  ›  专栏  ›  技术社区  ›  Cody

Android深色模式:高程不更改表面颜色

  •  0
  • Cody  · 技术社区  · 5 年前

    blog post <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> 做一个按钮或卡片,像这样:

            <Button
            android:id="@+id/keypadOne"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@color/surface"
            android:elevation="01dp"
            android:text="@string/one"
            android:textColor="@color/onSurface"
            android:textSize="36sp" />
    

    我希望看到的效果,使物体看起来更轻,由于半透明的白色覆盖在黑暗的主题中使用暗示海拔或更接近光源比背景。相反,我的按钮、动作栏等与背景颜色相同,因此不可见。

    我的问题是:

    1. 如果我在android10+上自动运行这个功能,我是否需要在版本9和更早的版本上实现向后兼容的手动解决方案?
    0 回复  |  直到 5 年前
        1
  •  2
  •   Cody    5 年前

    我找到了 solution app:cardElevation

    例如,我的CardView现在如下所示:

    <com.google.android.material.card.MaterialCardView android:id="@+id/testCard" android:layout_width="match_parent" android:layout_height="wrap_content" android:elevation="18dp" app:cardCornerRadius="4dp" >
    

        2
  •  1
  •   Burhan Khanzada    5 年前

    DayNight 像这样的变体

    <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">

    这将自动更改的表面颜色 AppBarLayout , Toolbar MaterialCardView 但如果要根据其他视图的高程设置此自动曲面颜色更改,请设置

    android:background="?attr/colorSurface" app:cardBackgroundColor="?attr/colorSurface" 并使用

    android:elevation="4dp" elevation="4dp" 或者在 材料视图 用这个 app:cardElevation="4dp"

    推荐文章