Android ActionBarCompat库

时间:2013-07-25 11:19:13

标签: android android-studio android-actionbar-compat

我在使用昨天发布的ActionBarCompat支持库时遇到了问题。我已经更新了支持存储库,并在build.gradle中包含了appcompat-v7存储库的路径,正如Chris Banes在DevBytes中指出的那样 - 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,但这似乎不是正确答案。

我做错了什么?谢谢。

6 个答案:

答案 0 :(得分:9)

我正在使用Android Studio,我在values/styles.xml中遇到了同样的解决问题。

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

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

如何告诉Android Studio可以在appcompat-v7 repo中找到此res?
(此问题与Android Studio中已修复的错误有关。)


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

Gradle集成:

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

样式-文件:

值/ styles.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>

答案 1 :(得分: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)注意到布局编辑器已修复,但代码编辑器不是。

因此,该计划应该建立&amp;运行正常,只需在XML样式编辑器中查看时显示红色样式。

答案 2 :(得分:2)

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

我通过以下步骤在Eclipse中取得了成功。

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

  

d:\ ADT-束窗口86 \ ADT-束窗口86 \ SDK \额外\机器人\支持\ V7

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

答案 3 :(得分:2)

我还在build.gradle文件中的依赖项部分添加了相同的2行。编译开始工作但我遇到了运行时错误。然后我发现了选项工具&gt; Android&gt;使用Gradle文件同步项目。这似乎可以解决问题。 (我在Android Studio 0.2.9上)

答案 4 :(得分:2)

就我而言,Lastest Studio 0.8.1

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

我的解决方案:

档案 - &gt;项目结构 - &gt;依赖 - &gt; +(加) - &gt;选择appcompact,support,....

错误已修复。

感谢。

答案 5 :(得分:0)

Cf https://plus.google.com/113735310430199015092/posts/ef5LyGyMddy

David Van de Ven

  

除非有人忘记更新支持存储库,否则任何人   使用android studio会在尝试时让他们的gradle构建中断   使用新的支持库。

Roman Nurik

  

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