41

ユーザーが選択したテーマを取得しようとしていますが、イライラして近づいているように感じます。でテーマを定義することは正常にAndroidManifest.xml機能しますが、(私が知る限り)アプリの設定に基づいて変更することはできません。

<application 
    android:theme="@style/theme_sunshine" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name">

または、各アクティビティで動的に設定することもできます。

someChosenTheme = PreferenceManager.getDefaultSharedPreferences(this).getString("themePreference", "theme_twilight");
setTheme(someOtherChosenTheme);

しかし、それは面倒なようで、アプリ全体のテーマを1か所に設定したいと思います。私の最初の考えは、メインのアクティビティが起動したらすぐにアプリケーションコンテキストを取得し、そこで実行することでした。

getApplicationContext().setTheme(R.style.theme_dummy);

私が知る限り、これでうまくいくはずですが、実際には何もしていません。アプリ全体がデフォルトのAndroidスタイルになっています。上記は有効ですか?もしそうなら、私は何か他の愚かなことをしている可能性がありますか?

それが重要な場合、私はAPIレベル3で作業しています。正しい方向への製品は大歓迎です!

関連する質問。

4

2 に答える 2

33

アプリの基本アクティビティを作成し、オーバーライドonCreateしてテーマを設定します。この基本アクティビティから他のすべてのアクティビティを取得します。

このチュートリアルも確認してください。

http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html

于 2011-01-12T19:37:30.657 に答える
5

これには良い解決策があるかもしれませんが、それが見つからなかったので、アクティビティを受け取り、基本的にあなたが書いた2行を実行するヘルパークラスで小さな静的ヘルパーメソッドを作成することになりました。確かに、それは完璧ではありませんが、私のアプリのすべてのメソッドに1行の短いコードを追加するだけonCreate()で許容できました。

于 2011-01-11T23:17:56.447 に答える