【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】webviewでアプリ内にwebページを読み込む
webviewを使ってandroidアプリ内にwebページを読み込む定型文です。 //vie
-
ダイアログを表示する
カスタムアラートダイアログ private void showCustomAlert(A
-
アプリ間連携 Intentfiler
ブラウザの共有からURLを受け取る。 Manifest.xmlのURL受け取り先のactivity
-
【android】バイブレーションを使う
必要なファイル MyApp.manifest MyApp.java MyApp.m
-
【android】 setOnClickListener(false)が効かない
間違いその1 OnClickListenerが登録されているViewにsetClickable
-
【android】ネットワークの接続状況を確認する
コードから接続状況を確認。 ConnectivityManager co
-
【android】処理時間を計測する
パフォーマンスのリファクタリングを行うには処理時間の計測がかかせません。 SDK標準のクラスを使っ
-
【android】スリープモードに入らせない
Androidでは一定時間、操作をしないとスリープモードに入って待機状態になってしまいますが、動
-
[android] JSONのパースにかかる時間
リストデータなんかを保存したいというのはよくある要件だと思います。 DBは面倒だしカラム毎に集計す
-
[android] モンキーテスト(Monkey Test)を実行する
最近テストの効率化に目覚めました。 モンキーテストは猿にアプリを渡してみてめちゃくちゃな操作をさせ