【android】複数のカスタムテーマを設定で切り替える
公開日:
:
最終更新日:2012/05/30
android
背景色やアプリ全体のテーマ色を設定で変更したいという要望をもらったので実装してみました。
目次
属性値の名前を定義
res/values/attrs.xmlに使用する属性の名前を定義します。
下記を定義
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyTheme"> <attr name="myColor" format="color"></attr> <attr name="myText" format="string"></attr> <attr name="myInt" format="integer"></attr> <attr name="myRef" format="reference"></attr> </declare-styleable> </resources>
カスタムテーマを定義
res/values/theme.xmlに先程定義した属性の値を定義します。
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="テーマ名" parent="@android:style/Theme.Light.NoTitleBar"> <item name="myColor">#22AAFF</item> <item name="myText">hello theme</item> <item name="myInt">90</item> <item name="myRef">@drawable/icon</item> </style> </resources>
viewに属性を適用
実際にviewの属性値として適用していきます。
テーマ内の属性を参照する場合は
?attr/属性名
のように書きます。
<LinearLayout xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="?attr/myColor" /> <ImageView android:src="?attr/myRef" />
アプリケーションやアクティビティにテーマを適用
カスタムテーマはマニフェストファイルからも適用できますが、今回は設定により複数のテーマを切り替えるのでコードから適用します。
@Override public void onCreate(Bundle savedInstanceState) { //設定をロード if( condition ){ setTheme(R.style.テーマ1); }else{ setTheme(R.style.テーマ2); } super.onCreate(savedInstanceState); setContentView(R.layout.main); }// end of onCreate
以上です。
関連記事
-
【android】アプリのバージョン情報を取得する
int versionCode = -1; String versionName = &quo
-
【andoid】ViewPagerを使う
1. layout.xmlにViewPagerを配置 2. PagerAdapter.jav
-
【android】 年月だけのDatePicker
final DatePicker datePicker = new DatePicker(sel
-
【android】サービスの実装
ダウンロードなどActivityに依存したくない大きなバックグラウンド処理や常駐プロセスを作りたい場
-
【android】標準の設定画面を作る
設定画面のテンプレートです。 検索一発クンのコードから抜粋しました。 チェックボックス、リス
-
【android】非同期処理
Androidで非同期処理、マルチスレッドを処理するスニペット。 AndroidのスレッドはUIス
-
【android】ホーム画面や他のアプリの前面にViewを表示する。
WindowManagerのTYPE_SYSTEM_ALERTのレイヤーにViewを表示することで、
-
【android】リスト項目のmatch_parentが効かない
下記のようなリスト項目用のレイアウトを用意して、リストの右端にチェックボックスを置くようにしたのです
-
【android】設定画面の作成
res/xml/preferences.xml <?xml version=&quo
-
【android】アプリ内課金を実装する
アプリ内課金のサンプルコードを解析します。 参考URL 公式API Android