13

我在使用昨天发布的 ActionBarCompat 支持库时遇到问题。正如 Chris Banes 在 DevBytes 中指出的那样,我已经更新了支持存储库并在 build.gradle 中包含了 appcompat-v7 存储库的路径 - https://www.youtube.com/watch?v=6TGgYqfJnyc

dependencies {
compile ('com.android.support:support-v4:18.0.+')
compile ('com.android.support:appcompat-v7:18.0.+')}

构建顺利,我可以使用这个库中的 ActionBarActivity 等类,但我不能使用样式和任何资源,所以我不能使用以下主题 - @style/Theme.AppCompat 等。我想我会在..中找到源文件./sdk/extras/android/.../"supportrepo" 所以我会像 gradle 的 ActionBarSherlock 一样引用它,但这似乎不是正确的答案。

我究竟做错了什么?谢谢你。

4

6 回答 6

9

我正在使用 Android Studio,并且在我的values/styles.xml.

它说它无法解析@style/Theme.AppCompat.Light,但在编译时(gradle)和运行时一切正常(Android 2.3.3 & 4.3)

我想摆脱无法解决 res 的警告。

我如何告诉 Android Studio 这个资源可以在 appcompat-v7 存储库中找到?
(这个问题与已经修复的 Android Studio 中的错误有关。)


下面你看看我做了什么。我希望这将有所帮助。建议表示赞赏。
appcompat 库的源代码可以在github上找到。

摇篮集成:

dependencies {
    ...
    compile group:'com.android.support', name:'appcompat-v7', version:'18.0.+'
    ...
}

样式文件:

值/样式.xml:

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/ActionBar.Solid.Custom</item>
    </style>

    <style name="ActionBar.Solid.Custom" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="background">@drawable/ab_solid_custom</item>
        <item name="displayOptions">homeAsUp|showHome|showCustom</item>
    </style>

</resources>

值-v14/styles.xml:

<resources>

    <!--
        Base application theme for API 14+. This theme completely replaces
        AppBaseTheme from BOTH res/values/styles.xml and
        res/values-v11/styles.xml on API 14+ devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
        <!-- API 14 theme customizations can go here. -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/ActionBar.Solid.Custom</item>
    </style>

    <style name="ActionBar.Solid.Custom" parent="@android:style/Widget.Holo.Light.ActionBar.Solid">
        <item name="android:background">@drawable/ab_solid_custom</item>
        <item name="android:displayOptions">homeAsUp|showHome|showCustom</item>
    </style>

</resources>

MainActivity (只有扩展是强制性的)

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Views.inject(this);

        setupNavigationDrawer();
    }
}

AndroidManifest.xml (必须设置 android:theme)

    <activity
            android:name="com.example.app.MainActivity"
            android:theme="@style/AppTheme"
            android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
于 2013-07-25T14:09:38.453 回答
7

有一个已知的错误(http://code.google.com/p/android/issues/detail?id=56312),Android Studio IDE 会将样式标记为红色(该错误是针对 ActionBarSherlock,但问题是与包含样式的 aar 以及该 aar 的源对 Android Studio 不可见)有关。

具体来说,评论 #8 ( http://code.google.com/p/android/issues/detail?id=56312#c4 ) 显示了观察到的行为,评论 #10 ( http://code.google.com/ p/android/issues/detail?id=56312#c10)注意到布局编辑器是固定的,但代码编辑器不是。

因此,程序应该构建和运行良好,只是在 XML 样式编辑器中查看时以红色显示样式。

于 2013-07-26T14:14:41.260 回答
2

就我而言,最新工作室 0.8.1

创建新项目并将 Style 设置为 AppTheme。然后崩溃。

我的解决方案:

File -> Project Structure -> Dependicies -> + (plus) -> 选择 appcompact, support, ....

并修复了错误。

谢谢。

于 2014-07-02T18:59:22.147 回答
2

我还没有尝试过 Gradle,所以我不确定,但您似乎还需要将资源复制到您的项目中。它包含 Theme.AppCompat。

我按照以下步骤在 Eclipse 中取得了成功。

从以下路径导入android-support-v7-appcompat为 libray 项目。(您可能已将 sdk 保存在不同的路径上)

D:\adt-bundle-windows-x86\adt-bundle-windows-x86\sdk\extras\android\support\v7

我刚刚将这个库添加到我的项目中,并且开箱即用。

于 2013-07-25T11:33:54.613 回答
2

我还在 build.gradle 文件的依赖项部分中添加了相同的 2 行。编译开始工作,但出现运行时错误。然后我发现了选项Tools > Android > Sync Project with Gradle Files。这似乎奏效了。(我在 Android Studio 0.2.9 上)

于 2013-09-22T07:53:36.643 回答
0

参见https://plus.google.com/113735310430199015092/posts/ef5LyGyMddy

大卫范德文

除了有人忘记更新支持库,所以任何使用 android studio 的人在尝试使用新的支持库时都会遇到他们的 gradle 构建中断。

罗曼努里克

+David Van de Ven 我们正在努力。

于 2013-07-26T01:43:16.100 回答