現在、Android デバイスで利用できるテーマは最大 3 つ、場合によっては 4 つです (.Light
バリエーションや類似のものは含まれません) 。
Theme

2.3 Gingerbread(10) までの Android の最も初期のバージョンのデフォルト (これらのバージョンでのマイナーなスタイル変更を含む)
Theme.Holo

Android 3.0 Honeycomb で導入 (11)
Theme.Material

Android 5.0 Lollipop の新機能 (21)
Theme.DeviceDefault
(なんでもいいです)
4.0 Ice Cream Sandwich (14) で導入されました。これは、デバイス メーカーがカスタマイズできるテーマです。これは、デバイスのネイティブな外観を表します。つまり、Nexus デバイス (および Android Studio のデザイン エディター) の Holo または Material であり、他のデバイスでカスタム化されている可能性があります。「何かカスタム」がオプションでない場合、それらのデバイスにはストック テーマが付属している必要があります。ただし、ストック テーマが必要なアプリはそれを指定する必要があります。
これに対する最善のアプローチは何ですか?
テーマなし + targetSdkVersion >= 14
最も簡単ですが、必ずしも最適とはいえないオプションは、テーマをまったく定義しないことです。Android がデフォルトを選択します。しかし、Android は、予期しないテーマでアプリを驚かせたくないので、おそらくアプリを設計したテーマにフォールバックします。内部を調べることでそうしandroid:targetSdkVersion
ますAndroidManifest.xml
(現在はgradleを介して設定できます)。
Theme
のみ(つまり、API レベル 3 ~ 10)しかなかった古いプラットフォームを対象とするアプリは、Theme
.
- 11 ~ 13 歳をターゲットとするアプリは get
Theme.Holo
.
- 14歳以上の方が対象となります
Theme.DeviceDefault
。
Theme.Material
これは下位互換性のためだけのものであるため、古い Gingerbread フォンを使用することはできません。したがって、テーマなし + ターゲット 14+ = デバイスのデフォルト。
異なるテーマの指定
Android のリソース オーバーレイ システムでは、デバイスの API レベルに基づいてスタイルを指定できます。たとえば、 と の異なるバージョンのres/values-v11
スタイルres/values-v21
。これは、Android Studio を介して新しく作成されたアプリがセットアップするものでもあります。
例として、.Light
テーマ アプリの最も基本的な設定は次のようになります。
/res/values/styles.xml
すべてのデバイスに適用され、ベースとして機能します
<resources>
<style name="AppTheme" parent="android:Theme.Light"/>
</resources>
/res/values-v11/styles.xml
API レベル 11 以上 (21 以上のものを含む) を持つすべてのデバイスにロードされます。ただし、実際に使用されるのは「AppTheme」の最新バージョンのみです。
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light"/>
</resources>
/res/values-v21/styles.xml
<resources>
<style name="AppTheme" parent="android:Theme.Material.Light"/>
</resources>
注: または、 in を指定するTheme.DeviceDefault
だけ/res/values-v14/styles.xml
でデフォルトの外観にすることができますが、デザインを微調整することはできません。v14 オーバーライドを追加しても問題ありません。結局、DeviceDefault と Holo は異なる可能性があります。
AndroidManifest.xml
カスタムテーマを使用する場所です。たとえば、アプリケーション全体のデフォルトとして:
...
<application
android:theme="@style/AppTheme"
...
公式ドキュメントへのリンク
プラットフォームのバージョンに基づいてテーマを選択する- リソース構成を介してさまざまなスタイルを定義するための公式ドキュメント
Holo Everywhere - デフォルトのメカニズムと DeviceDefault / Holo テーマを説明するブログ記事
マテリアル テーマの使用- マテリアル ドキュメント