我只是在设计我的布局,没有预料到会出现任何问题,但是有一天 android 9.0 发布了,我带来了手机并在其中安装了我的应用程序,并尝试用夜间模式打开我的应用程序,我开始看到白色布局的变化在黑暗中,我的思绪变得混乱。我想知道如何禁用主题。
I tried changing themes, changing the background colors none of those works
<RelativeLayout
android:layout_width="190dp"
android:layout_height="200dp"
android:layout_marginTop="-15dp"
android:layout_below="@+id/tableTxt"
android:background="@drawable/table_no_orders_border"
android:theme="@style/ThemeOverlay.AppCompat.Light"
android:layout_centerHorizontal="true">
<android.support.v7.widget.CardView
android:id="@+id/cv_one_login"
android:layout_width="189dp"
android:layout_height="199dp"
android:layout_centerHorizontal="true"
android:elevation="10dp"
app:cardCornerRadius="1dp"
app:cardElevation="10dp"
android:layout_marginTop="0.1dp">
<android.support.v4.widget.NestedScrollView
android:id="@+id/sv1"
android:layout_width="match_parent"
android:layout_height="147dp"
android:scrollbars="vertical"
android:scrollbarSize="10dp"
android:isScrollContainer="true">
<TextView
android:id="@+id/tableItems"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/table"
android:layout_marginStart="5dp"
android:layout_marginTop="13dp"
android:textColor="@color/TextcolorforBlack"/>
</android.support.v4.widget.NestedScrollView>
<TextView
android:id="@+id/totalTableBill"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/total_bill"
android:textColor="@color/SettingsColor"
android:layout_below="@id/sv1"
android:textAlignment="gravity"
android:gravity="bottom"
android:layout_marginStart="5dp"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我需要设计好的布局。即使主题被应用也应该是相同的。
我正在制作一个 Android 应用程序。我为深色模式制作了另一个 UI。这就是我所需要的;该应用程序将在当地时间之前自动切换到深色主题。例如,当当地时间太阳落山时,应用程序将切换到黑暗模式。
或者另一种选择是在一天中预设的时间切换到深色模式。希望你理解我的问题。如果有人知道,请帮助我,如果可能的话,我更喜欢第一个选项。提前致谢。
我似乎无法让 android web view 使用深色主题或使用
@media (prefers-color-scheme: dark)
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 DayNight 主题的 AndroidX
有没有人有在 api 29 之前向后兼容的解决方案?
以下CSS是在head设备处于黑暗模式时更改电子邮件正文颜色的 HTML 电子邮件。
@media (prefers-color-scheme: dark) {
.white-cont {
background: red !important;
}
}
Run Code Online (Sandbox Code Playgroud)
它仅在苹果邮件应用程序中转换电子邮件正文。Gmail 应用程序什么都不做,整个邮件会自动转换为深色方案,这不太好。
如何使黑暗模式响应 Gmail 电子邮件?为什么上面的标签在 gmail 中不起作用?任何解决方案?
我的应用程序中有大约三百个布局,我想为它实现深色主题。目前,我试图找出是否有任何与背景颜色相关的错误。为了做到这一点,我一一查看所有布局,在预览窗口中打开它们并单击“预览方向 -> 夜间模式 -> 夜间”。它有点无效且缓慢。有没有办法默认在夜间模式下显示 xml 预览?
我正在将主题 Theme.AppCompat.DayNight.NoActionBar 应用于我的应用程序。在浅色主题中,我希望状态栏为白色,而在深色主题中,我希望状态栏为黑色。
我不能让状态栏变成白色,字母变成黑色,反之亦然。
这是我的风格:
<style name="AppTheme.Base" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorControlNormal">@color/primary_dark</item>
<item name="colorControlHighlight">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/letter_medium_emphasis</item>
<item name="android:textColorSecondary">@color/letter_high_emphasis</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这是我的颜色文件:
<resources>
<color name="primary">#ffffff</color>
<color name="primary_dark">#0336ff</color>
<color name="letter_high_emphasis">#de000000</color>
<color name="letter_medium_emphasis">#99000000</color>
<color name="letter_medium_disabled">#61000000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
我尝试添加参数 @color/primary 但我仍然得到同样的结果,状态栏是白色的,同样来自状态栏的文本也是白色的。
在浅色主题中显示带有深色字母的白色状态栏以及在深色主题中反之的方式是什么?
提前致谢。
我的应用程序使用Theme.AppCompat.DayNight.NoActionBar AppTheme, 并有一个导航抽屉。我所有的 drawable 都是 XML 向量,其中的路径是黑色的。为了使用我的 sidenav 菜单中的这些 drawable,Android 或 SDK 中的某个地方已经反转了 drawable,这样我的路径实际上是白色的(或者接近白色的颜色,也许实际上是colorAccent)。这很好。
但是当我将相同的可绘制对象作为菜单项放置在操作栏中时,它并没有反转并且仍然使用黑色路径。怎么来的?我如何在那里发生同样的魔法?
主题:
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="colorAccent">@color/primaryTextColor</item>
<item name="android:navigationBarColor">#00000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)
主活动布局中的操作栏:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
menu/action_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu 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">
<item android:id="@+id/bookmarkAction"
android:title="@string/bookmark"
android:icon="@drawable/ic_bookmark_off"
app:showAsAction="always"
tools:ignore="AlwaysShowAction" />
</menu>
Run Code Online (Sandbox Code Playgroud)
下面是我如何扩充菜单并处理从片段中切换书签的方法(这ToggleButton似乎不会为我节省任何工作):
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.action_bar, menu)
super.onCreateOptionsMenu(menu, inflater)
}
// Swap out the bookmark icon in the options menu depending
// on whether …Run Code Online (Sandbox Code Playgroud) 编辑:在底部更新
我在应用程序中调用它onCreate:AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
然后,当我进入设备设置(设置 -> 显示 -> 夜间模式(开关:开/关))时,我将恢复我的应用程序,但不会应用主题。无论我在设备设置中打开或关闭夜间模式,都不会应用主题。
false我还添加了一个断点,并检查了即使设备设置中的深色模式处于打开状态,以下内容也会返回给我(注意:应用程序是在深色模式关闭的情况下启动的)。
fun isNightMode(app: Application): Boolean {
return when(app.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
Configuration.UI_MODE_NIGHT_NO -> false
Configuration.UI_MODE_NIGHT_YES -> true
else -> false
}
}
Run Code Online (Sandbox Code Playgroud)
当我从设备设置更改主题时,资源似乎application's没有更新。
为了调试目的,我重写了 Application 类中的以下函数:
override fun onConfigurationChanged(newConfig: Configuration?) {
super.onConfigurationChanged(newConfig)
}
Run Code Online (Sandbox Code Playgroud)
它正在被调用。
编辑:看起来这就是导致问题的原因。在应用程序类中有这个:
override fun attachBaseContext(base: Context) {
val locale = Locale("de", "DE")
Locale.setDefault(locale)
val resources = base.resources
val configuration = Configuration(resources.configuration)
configuration.setLocale(locale)
val baseContext = base.createConfigurationContext(configuration)
super.attachBaseContext(baseContext)
}
Run Code Online (Sandbox Code Playgroud)
如果我删除上面的代码,它就可以工作。
在较新版本的 Android Studio 中,在 values 目录中有 theme.xml 和 theme.xml(night) 可以指出它们之间的区别吗??它会取代styles.xml 吗??
java android android-theme android-night-mode android-dark-theme
尝试在现有应用程序中添加对深色主题的支持时遇到奇怪的行为。
我添加了values-night文件夹,在其中添加了新的colors.xml不同十六进制的暗模式。Theme.MaterialComponents.DayNight.NoActionBar然后我从AppTheme中扩展。
运行应用程序时,它会根据手机中已设置的主题采用正确的颜色。但是当我更改主题并返回应用程序时,颜色不会改变。从日志中我可以看到活动和片段已重新创建,因此这部分按照文档中的描述工作。
如果我添加uiMode到清单中的 configChanges,则不会重新创建活动,而是在onConfigurationChanged(newConfig: Configuration). 但是调用这个函数
resources.configuration.uiMode.and(Configuration.UI_MODE_NIGHT_MASK)
Run Code Online (Sandbox Code Playgroud)
无论我将手机设置为哪个主题,始终返回相同的值。
如果我重新启动应用程序,手机的当前主题将正确应用。因此,感觉应用程序陷入了启动时收到的初始主题(上下文),然后永远不会更新。
我在我的应用程序中设置了 Dagger2 以注入依赖项,其中一个单例是applicationContext. 我从中删除了 @Singleton 标签,但没有帮助。
如果您能帮助解决此问题,我将不胜感激。有人能提示在哪里调试吗?