我正在研究当前Android应用程序中的CardView和Dark主题。
除CardViews之外,当启用黑暗模式时,我的大多数应用程序将按预期工作。
我的梯度和这个很像
android {
compileSdkVersion 29
defaultConfig {
applicationId "org.application.investigation"
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
implementation 'androidx.cardview:cardview:1.0.0'我的主题如下:
<resources>
<style name="AppTheme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorError">@color/design_default_color_error</item>
<item name="android:textColor">?attr/colorOnBackground</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>我的CardView布局类似于这样:-
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_films_cardview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="?android:attr/colorBackground"
card_view:cardCornerRadius="10dp"
card_view:cardElevation="5dp"
card_view:cardUseCompatPadding="true"
tools:context=".films.Films">
<LinearLayout
android:id="@+id/item_films_film"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:background="?attr/colorSurface"
android:foreground="?android:attr/selectableItemBackground"
android:orientation="vertical"
android:padding="@dimen/default_padding">
<TextView
android:id="@+id/film_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="?android:attr/textColorPrimary"
android:textSize="@dimen/text_heading"
android:textStyle="bold"
tools:text="Title Of Film" />
<TextView
android:id="@+id/film_director"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="italic"
tools:text="Director Of Film" />
<TextView
android:id="@+id/film_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="center_horizontal"
android:lineSpacingMultiplier="@dimen/line_spacing_item"
android:maxLines="3"
android:textColor="?android:attr/textColorPrimary"
tools:text="Description Of Film" />
</LinearLayout>
</androidx.cardview.widget.CardView>CardViews在光模式下是“完美的”,但是当我切换到黑暗模式时,CardViews是不可见的。
我犯了什么错误?
是否有可能在黑暗模式下使用CardViews并看到它们?
发布于 2020-02-10 10:00:25
由于您使用的是Theme.MaterialComponents.DayNight.*主题,所以使用com.google.android.material.card.MaterialCardView而不是androidx.cardview.widget.CardView。
MaterialCardView扩展了androidx.cardview.widget.CardView并使用了一种不同的样式:Widget.MaterialComponents.CardView。
发布于 2020-08-05 14:54:08
由于您使用的是Theme.MaterialComponents.DayNight.*,所以cardView小部件必须使用com.google.android.material.card.MaterialCardView类而不是androidx.cardview.widget.CardView。
因此,在xml中,膨胀card_view:cardBackgroundColor="?attr/colorSurface"而不是card_view:cardBackgroundColor="?android:attr/colorBackground",作为物质指南,说明
此外,该材料安卓库提供PrimarySurface风格的组件,作为大表面,并通常使用colorPrimary作为他们的背景光主题。这些样式将自动切换之间的组件的主要颜色风格在轻主题和表面颜色风格在黑暗主题。
参考资料:material.io
https://stackoverflow.com/questions/60147669
复制相似问题