我正在关注https://developer.android.com/jetpack/compose/tutorial
和代码
@Preview(name = "Light Mode")
@Preview(name = "Dark Mode", uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED, showBackground = true)
@Preview(name = "Full Preview", showSystemUi = true)
@Composable
fun DefaultPreview() {
ComposeTutorialTheme {
MessageCard(Message("Roman", "message body"))
}
}
Run Code Online (Sandbox Code Playgroud)
我开始在我的应用程序上实现暗模式,我正在使用Theme.AppCompat.DayNight.NoActionBar
. 设备上一切正常,但我想查看 Android Studio 上的差异,因此我不必继续运行代码来查看更改。
如何切换 Android Studio Preview 以显示夜间模式与灯光模式主题?
谢谢。
编辑:为了清楚起见,我想在预览中显示资源文件夹-night
而不是普通资源文件夹中的任何内容。
android android-theme android-studio material-design android-darkmode
各位开发者大家好。
我已经使用Android Studio开发了 Android 应用程序,但我只考虑了灯光模式的布局主题。它看起来是这样的:
所以现在,当我将手机切换到深色模式时,会发生这种情况:
如何更改深色模式下显示的颜色?
当我启用深色模式时,我的应用程序上的某些菜单看起来很糟糕:非常暗的背景上的黑色文本。我对颜色完全是一个初学者。
我还没有接触过 android studio 上默认颜色设置的任何内容,所以我有默认的两个主题 XML 和 Color Xml:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.TestSS" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.TestSS.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.TestSS.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.TestSS.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
Run Code Online (Sandbox Code Playgroud)
和:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. --> …
Run Code Online (Sandbox Code Playgroud) 我一直在尝试 Jetpack compose,我注意到,尽管Text
切换到深色模式时文本颜色会正确更新,但TextField
或 的文本颜色OutlinedTextField
仍然顽固地保持黑色。不过,标签和提示的颜色正确。
确定字段的默认文本样式是MaterialTheme.typography.body1
我已更新我的应用程序主题以包含此解决方法:
val typography = if (darkTheme) {
//TODO: Hack to show text field text in dark mode
MaterialTheme.typography.copy(body1 = MaterialTheme.typography.body1.copy(color = Color.White))
} else {
MaterialTheme.typography
}
MaterialTheme(colors = colors, content = content, typography = typography)
Run Code Online (Sandbox Code Playgroud)
但如果这是解决方案,我就必须对每种排版风格都这样做,而且感觉应该是自动的。那么我是否做错了什么,或者这是在正式发布之前将得到解决的问题之一?
这是我的实际可组合项之一(包含在我的主题中):
@Composable
fun UsernameField(
value: String,
isError: Boolean,
onValueChange: (String) -> Unit,
) {
Column {
OutlinedTextField(
value = value,
onValueChange = onValueChange,
modifier = Modifier.fillMaxWidth(),
label = { Text("Username") }, …
Run Code Online (Sandbox Code Playgroud) android android-jetpack-compose android-darkmode android-compose-textfield
我主要使用Android模拟器进行开发。是否有一种快速方法(最好是键盘快捷键)在深色模式和浅色模式之间切换以测试深色/浅色主题?
暗模式下的 Android 10 通知看起来像负面图像
注意:我没有将我的应用程序定位到 android 10 (API 29)
minSdkVersion 17
targetSdkVersion 28
Run Code Online (Sandbox Code Playgroud)
Android 10 通知如下所示
在 API 28 暗模式下工作正常
我正在我的应用程序中开发 Day/Night 功能,所以我阅读了这些文档并开始开发它。
使用 deligate 方法在 Day 或 Night 中使用默认值可以正常工作AppCompatDelegate.setDefaultNightMode(*)
。
为了自定义夜间主题颜色,我创建了values-night文件夹,并在里面创建了如下所示的colours.xml文件。
res -> values -> colors.xml
res -> values-night -> colors.xml
Run Code Online (Sandbox Code Playgroud)
在我放置该颜色但未应用于 Night 主题之后!很奇怪为什么价值夜间颜色并不总是应用其显示的默认夜间颜色?我研究了一些,但找不到解决方案。
注意:重新创建活动解决了我的问题,但我不想重新创建
这是我的 build.gradle 文件
提前谢谢。
我在某些 Android 手机上使用某些图像视图时遇到问题。
似乎暗模式反转了某些资产的颜色(不是全部,似乎只有黑色/深灰色)
一个例子。
我找不到避免这种情况的方法。是否有某种属性可以保护图像不被反转?
我正在实现对暗模式的支持。但是在我将 Theme parent 更改为Theme.AppCompat.DayNight 之后,Action Bar 中的文本是黑色的(白天模式下为黑色,黑暗模式下为白色)。我希望文本始终为白色。我试图在styles.xml (values and values-night) 中改变文本颜色
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<item name="android:actionBarStyle">@style/MyActionBarStyle</item>
</style>
<style name="MyActionBarStyle" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="android:titleTextStyle">@style/MyActionBarTitleTextStyle</item>
</style>
<style name="MyActionBarTitleTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但它不起作用。ActionBar 中的标题文本颜色仍然是黑色。
android android-appcompat android-actionbar android-darkmode