17

以下のようにstyles.xmlファイルにテーマを書きます

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <!-- Root styles that vary by API level -->
<style name="FrameworkRoot.Theme" parent="Theme.Sherlock.Light.DarkActionBar">
    <!-- API 11+ (compatibility) -->
    <item name="buttonBarStyle">@style/Compat.ButtonBar</item>
    <item name="buttonBarButtonStyle">@style/Compat.ButtonBarButton</item>
    <item name="indeterminateProgressStyle">@style/Compat.IndeterminateProgress</item>
    <!-- API 14+ (compatibility) -->
    <item name="listPreferredItemPaddingLeft">@dimen/compat_list_preferred_item_padding_left</item>
    <item name="listPreferredItemPaddingRight">@dimen/compat_list_preferred_item_padding_right</item>
    <item name="listPreferredItemHeightSmall">@dimen/compat_list_preferred_item_height_small</item>
</style>

しかし、エラーが発生します: エラー: 指定された名前に一致するリソースが見つかりません: attr 'buttonBarStyle'.

Google io2012 からコードを取得します。私のものとそのすべてのベースの両方

    <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

Google io2012 のソース コードはコンパイルできますが、私のものはコンパイルできません。とても奇妙。誰かが理由を知っていますか?または同じ質問がありますか?

4

6 に答える 6

18

同様の問題がありました... Eclipse ワークスペースに 2 つのプロジェクトがあり、どちらも Android 4.2 jar に基づいています。1 つは minSdkVersion="8" と targetSdkVersion="17" を持ち、そのスタイルはbuttonBarStylebuttonBarButtonStyle名前の両方を問題なく参照します。他のプロジェクトは同じマニフェスト設定を使用しており、エラーのためにビルドされません:

 No resource found that matches the given name: attr 'buttonBarStyle'.
 No resource found that matches the given name: attr 'buttonBarButtonStyle'.

@dead'sファイルが必要であるというコメントを見たときattrs.xml、確認したところ、コンパイルできないプロジェクトにはこのファイルがありませんでした。作業中のプロジェクトは Eclipse Android アプリケーション プロジェクト ウィザードを使用して生成され、もう一方は手動で作成されたと思います。

の内容res/values/attrs.xml:

<resources>

    <!--
         Declare custom theme attributes that allow changing which styles are
         used for button bars depending on the API level.
         ?android:attr/buttonBarStyle is new as of API 11 so this is
         necessary to support previous API levels.
    -->
    <declare-styleable name="ButtonBarContainerTheme">
        <attr name="buttonBarStyle" format="reference" />
        <attr name="buttonBarButtonStyle" format="reference" />
    </declare-styleable>

</resources>

の内容res/values/colors.xml:

<resources>

    <color name="black_overlay">#66000000</color>

</resources>

そして、3 つのスタイル ファイル:

1) res/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<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.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="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level 
             can go here. -->
    </style>

    <style name="ButtonBarButton" />

    <style name="ButtonBar">
        <item name="android:paddingLeft">2dp</item>
        <item name="android:paddingTop">5dp</item>
        <item name="android:paddingRight">2dp</item>
        <item name="android:paddingBottom">0dp</item>
        <item name="android:background">@android:drawable/bottom_bar</item>
    </style>

    <style name="FullscreenTheme" parent="android:Theme.NoTitleBar">
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowBackground">@null</item> 
        <item name="buttonBarStyle">@style/ButtonBar</item>
        <item name="buttonBarButtonStyle">@style/ButtonBarButton</item>
    </style>

    <style name="ContentText">
        <item name="android:textColor">#0000ff</item>
        <item name="android:textSize">50sp</item>
        <item name="android:textStyle">bold</item>
    </style>

</resources>

2) res/values-v11/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

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

    <style name="FullscreenActionBarStyle" parent="android:Widget.Holo.ActionBar">
        <item name="android:background">@color/black_overlay</item>
    </style>

    <style name="FullscreenTheme" parent="android:Theme.Holo">
        <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="android:windowBackground">@null</item>
        <item name="buttonBarStyle">?android:attr/buttonBarStyle</item>
        <item name="buttonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
    </style>

</resources>

3) res/values-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.DarkActionBar">
        <!-- API 14 theme customizations can go here. -->
    </style>

</resources>
于 2013-02-12T22:38:52.073 に答える
11

buttonBarStyleSDKで述べているように、バージョン11以降用ですが、使用していますandroid:minSdkVersion="8"。のために働くはずではありませんandroid:minSdkVersion="11"か?

于 2012-07-20T07:09:44.457 に答える
1

以下のリンクを参照してください。コードで使用されている値を追加し、残りを削除します。お役に立てば幸いです。

https://android.googlesource.com/platform/frameworks/base/+/2888524e03896831f487e5dee63f18f1c33c0115/core/res/res/values/attrs.xml

于 2013-10-23T17:13:45.623 に答える
0

AppCompat が含まれていることを確認してください。図書館プロジェクトです。Android プロジェクトでライブラリ プロジェクトを参照する必要があります。

https://developer.android.com/tools/support-library/setup.html

リソースを使用したライブラリーの追加のトピックを確認してください。

于 2014-04-18T01:15:36.367 に答える