【问题标题】:Android Styles.xml Top Level Element Not CompletedAndroid Styles.xml 顶级元素未完成
【发布时间】:2015-05-29 00:50:34
【问题描述】:

我无法解释也无法修复“顶级元素未完成”的烦人错误,这是一个刚刚创建的全新项目。

这里是styles.xml截图

这是 Gradle 文件的一部分

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.android.support:support-v4:22.1.1'
}

所以它不像缺少参考。到目前为止,应用程序中唯一的另一件事是工具栏,我还缺少什么来消除此错误,我仍然能够构建和运行应用程序,但红色波浪线仍然存在,任何想法将不胜感激。

【问题讨论】:

  • 你的目标 API 级别是 22 吗?
  • 是的,我的目标 API 级别是 22,我的最低级别是 11
  • 项目名称应该没问题。也许它与您的父样式继承有关。试试我在下面发布的答案。

标签: android


【解决方案1】:

首先添加这个

compile 'com.android.support:appcompat-v7:22.0.0'  // 21 if your target is 21.

在您的 style.xml 文件中创建基本主题.. 这意味着您有一个适用于所有版本的基本主题 你的情况是从 11 到 21。您可以根据需要设置主题。

<style name="AppTheme" parent="AppTheme.Base">
</style>

<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/primaryColor</item> <!--do not use android:colorPrimary : older version doesn't recognize it.-->
    <item name="colorPrimaryDark">@color/primaryColorDark</item>
    <item name="colorAccent">@color/accentColor</item> <!-- in base theme don't use android prefix. it is not supported -->
</style>

首先是 style.xml 中的所有代码

现在,你有了 style.xml(v21) 在该文件中,您需要继承该基本主题。

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:colorPrimary">@color/primaryColor</item> <!--In version 21 you need to provide it as android:colorPrimary : older version only doesn't recognize it.-->
    <item name="android:colorPrimaryDark">@color/primaryColorDark</item>
    <item name="android:colorAccent">@color/accentColor</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:actionBarSize">60dp</item>
    <item name="android:textColor">#FFF</item>
</style>

这样,我希望你明白,AppTheme.Base 将适用于所有 API。 并且在 21 中,它将专门用于 v21。通过这种方式,您可以将 min sdk 版本设置为更低,因为您希望它是 11。

试试这个!让我知道它是否有效。!

【讨论】:

  • 我试过这个,然后它抱怨我的最低目标 API 所以我从 11 增加到 21 和我的目标 API 级别 @ 22。我什至创建了一个 values-v21 文件夹。关闭并重新打开该项目,但没有成功。我将重新启动 Android Studio 和笔记本电脑。
  • 您只需要为 API 21 及更高版本指定“android”命名空间。如果您的 style.xml 在根样式文件夹中(不是 v21),那么您不需要这样做。
  • 我已经更新了我的答案......让我知道它是否有效......抱歉迟到的回复很忙!
  • 谢谢,我试过了,但没有成功,我最终重置了我的 Android Studio 来修复它。谢谢你的帮助,我赞成这个答案
【解决方案2】:

这可能与您的样式继承有关。也许尝试删除第一个 AppTheme 样式,然后像这样更改您的自定义样式:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">...</item>
</style>

请确保您为您的活动引用此 AppTheme 名称。

【讨论】:

    【解决方案3】:

    经过几个小时的努力,我开始怀疑我的 Android Studio 安装或至少我的 Android Studio 编辑器已损坏,而我的假设被证明是正确的。

    按照here 的说明,我将我的 Android Studio 安装重置为默认值,然后错误就消失了。对于实际样式,不必为棒棒糖设备创建单独的文件夹 -v21。根据这个post,这样的东西会起作用。

    如果您使用的是 AppCompat,那么所有材质调色板属性(例如 colorPrimary)都可用于所有 API 级别,因此您可以编写一个主题:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>
    </style>
    

    【讨论】:

    • 这不是和我的回答一样吗?
    • 是的,不同之处在于,在我必须将我的 Android Studio 重置为默认值之前,什么都不会起作用
    • 啊,我明白了。所以听起来这只是一个奇怪的 Android Studio 故障。很高兴你成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2013-06-26
    相关资源
    最近更新 更多