web-dev-qa-db-ja.com

異なるテーマの異なるAndroid SDKバージョン

アプリケーションがインストールされているSDKのバージョンに応じて異なるテーマを使用する方法はありますか?

私が尋ねる理由は、SDKバージョン8までずっとサポートしたいからです。ただし、ICSを持っているユーザーの場合、ICSそしてHoloテーマを使用します。

Androidのバージョンごとに異なるレイアウトをプログラムする フォルダー値を持つことができることがわかります-テーマ宣言をオーバーライドするtheme.xmlを持つv14。ただし、Theme.Holoを参照すると、コンパイルされません。これは、AndroidManifest.xmlに以下が含まれているためと考えられます

<uses-sdk Android:minSdkVersion="8" />
<uses-sdk Android:targetSdkVersion="11"/>

どんなポインタでも大歓迎です。

更新:-OK、ここに私のファイルがあります:-AndroidManifest.xml:

<application
    Android:icon="@drawable/icon"
    Android:label="@string/app_name"
    Android:name=".Refunder"
    Android:theme="@style/MainTheme"
    >

res/values/themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MainTheme" parent="@Android:style/Theme.Light.NoTitleBar">
        <item name="Android:typeface">normal</item>
        <item name="Android:textSize">15sp</item>
    </style>
</resources>

res/values-v11/themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MainTheme" parent="@Android:style/Theme.Holo">
        <item name="Android:typeface">normal</item>
        <item name="Android:textSize">15sp</item>
    </style>
</resources>

これは私がここで読んだ記事と一致しています:- http://Android-developers.blogspot.com/2012/01/holo-everywhere.html

これを行うと、Eclipseで次のようなコンパイルエラーが発生します。-

error: Error retrieving parent for item: No resource found that matches the given name '@Android:style/Theme.Holo'
27
baynezy

(values-v14フォルダーを使用して)行っていることは正しいです。ビルドターゲットを変更して、コンパイルできるようにする必要があります。 (プロジェクトを右クリックし、プロパティを選択し、Androidを選択し、Android 14以上)を選択します)

以前のバージョンのAndroidで使用すると強制終了が発生するため、Android:minSdkVersionよりも大きい機能は使用しないでください。

15
Kuffs