【问题标题】:AAPT: error: attribute android:forceDarkAllowed not foundAAPT:错误:找不到属性 android:forceDarkAllowed
【发布时间】:2019-05-16 07:34:09
【问题描述】:

我正在尝试使用 android 深色主题。我安装了 android studio 3.5 预览版。

compileSdkVersion 28 targetSdkVersion 28

但仍然出现此错误。这是黑暗主题的错误还是我做错了什么?

build.gradle{
dependencies {
    // ...
    implementation 'com.google.android.material:material:1.1.0-alpha06'
    // ...
  }}

styles.xml

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
    <item name="android:forceDarkAllowed">true</item>
</style>

项目链接

https://github.com/googlesamples/android-DarkTheme

【问题讨论】:

标签: android android-theme android-styles


【解决方案1】:

您需要在您的应用 build.gradle 中将您的 compiledSdkVersion 提高到 29:

android {
    compileSdkVersion 29
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 29
        ...
}

那你应该好好去!

【讨论】:

  • 如果我不能/不想使用第 29 版但停留在 28 版怎么办?
  • 那么你不能使用 android:forceDarkAllowed 因为低于 29 的暗模式是未知功能。以及您的应用在 29 岁及以上安装时的表现如何?检查自己。
【解决方案2】:

我正在寻找答案,我是@Ruben pointed out)

compiledSdkVersion 28 更改为 compileSdkVersion 'android-Q' 应该 解决问题。 android:forceDarkAllowed 属性仅添加在 Android Q.

与此问题无关,但您似乎还需要更新 'androidx.appcompat:appcompat:1.1.0-alpha04''androidx.appcompat:appcompat:1.1.0-alpha05'或主题切换 不能正常工作。

【讨论】:

  • 是的,这是正确的 - 感谢您指出。如果您不更新到 appcompat 版本,它不会立即切换主题。您必须重新启动应用才能进行切换。
【解决方案3】:

当我尝试运行我以前未触及的基于 Angular 的 NativeScript“Hello World”android 应用程序时,我遇到了同样的错误消息。 (在命令提示符下:tns create, tns run android --bundle)

对我来说,解决方案是: 1.在Android Studio中打开SDK Manager 2. 安装Android 10.0 (Q) (API Level: 29) SDK Platform。

完成这些步骤后,我可以开始运行我的应用程序而不会出现任何错误!

【讨论】:

  • 我有相同的设置仍然得到与 nativescript 6.2 的错误
  • 我已完成上述所有操作,但仍然出现此错误。肯定不可能这么难。我还需要注意哪些其他问题?
【解决方案4】:

我在 android studio 建议中找到了答案。 为了澄清标签 android:forceDarkAllowed 仅在 api 级别 29+ 中找到 所以我们应该做的是创建一个文件夹 values-v29 然后像下面这样写标签

在文件值/____.xml 中

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
    //removed from here
</style>

在文件值-v29/____.xml

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight">
    <item name="android:forceDarkAllowed">true</item>
</style>

【讨论】:

  • 我想这个答案太新了,无法吸引人们在谷歌上搜索这个问题(这个问题已经存在两年了),但这是我需要的解决方案。我需要与 API 级别 26 兼容并将其增加到 29 只是为了解决小米手机的问题,这对我来说是不行的。对于希望应用它的其他人,在我的情况下,这两个文件的名称都是“styles.xml”,并且在 Android 8 和搞乱黑暗模式的愚蠢小米手机中都像一个魅力。
【解决方案5】:

请参阅Nativescript docs

删除以下行:

<item name="android:forceDarkAllowed">true</item>

来自文件

<project>/app/App_Recoures/Android/src/main/res/values/styles.xml

【讨论】:

  • 这是一个关于原生开发的问题,人们故意把这条线放在那里。
猜你喜欢
  • 2021-04-09
  • 2020-11-22
  • 1970-01-01
  • 2020-08-25
  • 2020-03-17
  • 2020-07-06
  • 2022-07-19
  • 2021-07-24
  • 2022-10-14
相关资源
最近更新 更多