我有一个折叠式工具栏布局,展开时以主色为背景。
但当我切换到夜间模式时,彩色背景变成了黑色,但我希望它保留原色。不过折叠后的工具栏还是可以的。
我不知道这个背景是怎么来的。谁能告诉我正确的方向?
编码。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_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_height="@dimen/app_bar_height"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
android:theme="@style/Theme.Tacho.AppBarOverlay">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="4dp"
app:expandedTitleMarginStart="100dp"
app:expandedTitleMarginBottom="50dp"
app:expandedTitleTextAppearance="@style/PosterText"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
tools:title="Hello MindOrks!">
<ImageView
android:id="@+id/toolbarImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:transitionName="@string/moviePosterTransitionName"
tools:background="#AA202020"
app:layout_collapseMode="parallax" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<ImageView
android:id="@+id/poster"
android:layout_width="70dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:background="#AA202020"
android:adjustViewBounds="true"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_marginBottom="@dimen/activity_horizontal_margin"
android:elevation="6dp"
app:layout_constraintDimensionRatio="h,60:89"/>
<LinearLayout
android:id="@+id/bgSubtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
app:layout_constraintBottom_toBottomOf="@id/poster"
app:layout_constraintStart_toEndOf="@id/poster"
android:layout_marginStart="12dp"
>
<ImageView
android:id="@+id/show_type"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_local_movies_24dp"
android:tint="@color/colorOnDark"
android:scaleType="centerInside"
android:layout_marginEnd="@dimen/line_spacing"/>
<TextView
android:id="@+id/item_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textAlignment="center"
android:maxLines="2"
tools:maxLines="1"
android:ellipsize="end"
android:layout_marginEnd="2dp"
tools:text="2019"
android:textColor="@color/colorOnDark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/show_type"
app:layout_constraintBottom_toBottomOf="@id/show_type"
android:gravity="center"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:titleTextColor="@color/colorOnDark"
app:popupTheme="@style/Theme.Tacho.PopupOverlay" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<include layout="@layout/content_movie_detail"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
风格.xml
<style name="Theme.TheMovieApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorSecondary">@color/colorSecondary</item>
<item name="colorSecondaryVariant">@color/colorSecondaryDark</item>
<item name="colorOnSecondary">@color/white</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorSurface">@color/colorSurface</item>
<item name="colorOnSurface">@color/colorOnSurface</item>
<item name="android:textColorPrimary">@color/textColorPrimary</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:fontFamily">@font/roboto_light</item>
<item name="fontFamily">@font/roboto_light</item>
</style>
<style name="Theme.TheMovieApp.Collapsing">
<item name="android:windowTranslucentStatus">true</item>
</style>
<style name="Theme.Tacho.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.Tacho.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
我相信在你的onCreate方法中加入这个就可以解决这个问题。
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
鉴于你使用的是 DayNight
主题,安卓系统会自动为你的用户界面应用黑暗主题。
如果你想支持黑暗主题,你可以创建一个 night
在你的颜色的变化 res/values-night/colors.xml
然后覆盖你喜欢的颜色。
例子
resvalues-nightcolors.xml
<color name="colorPrimary">#000000</color>
resvaluescolors.xml
<color name="colorPrimary">#FFFFFF</color>