コンテントヘッダー

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コンテントヘッダー

動的にSelecterを作る(ColoStateList)

こんにちは。
最近ちょっとだけTwitterにつぶやきをしている私です

さてタイトルの通りなんですが、開発をしているとボタンというパーツをよく使います。
そのボタンのテキストカラー背景色を状態に応じて変化させたい! という人、たくさんいますよね。
実際はxmlでファイルを作って設定するだけ...という具合に簡単なのですが、これはレイアウトにボタンがあることが決まっている場合です。(静的)

じゃあ、プログラム上から追加をする場合はどうなのよ、という話ですがこちらは動的追加ということになります。
が、動的追加の際には、なぜかうまくいかないことが多いらしいのです(私だけかな?)
そこで今回は動的にボタンを追加し、かつ動的にセレクターも作っちゃおうというお話です。

今回の利点
1、テーマ機能など多彩な表現方法がある場合でも楽に対応できる
2、実行速度がちょっと早い

ですかね(笑
ではさっそくソースを書きます

int[][] states = new int[][]{
//ここはボタンの状態を書いておく場所です。

//フォーカスがあるとき
new int[]{ android.R.attr.state_focused},
//押されているとき
new int[]{ android.R.attr.state_pressed},
//選択されているとき
new int[]{ android.R.attr.state_selected},
//選択されていない時
//最初の - は否定形です。
//xmlの書き方だとfalseのとこですね

new int[]{ -android.R.attr.state_selected}
};

//次にこちら。上に書いた各状態の時の色を書いてあります。
int[] colors = new int[]{/*フォーカス時の色*/ , /*押されているときの色*/ , /*選択されているときの色*/ , /*選択されてないときの色*/};

//そして最後に上の2つでカラーリストを作ります。
ColorStateList statelist = new ColorStateList(states, colors);

これをボタンとかにセットしてやれば状態に応じて色が変わってくれるはずです。
Button btn = new Button(this);
btn.setTextColor(statelist);
こんな感じ。

ちょっと余談
どんな部分でも静的な処理方法は書いてあるのに、動的処理については書いていないところが多いと思うAndroid。
処理時間も短くて済むのになんでだろうね(笑
スポンサーサイト
コンテントヘッダー

コメントの投稿

非公開コメント

プロフィール

Lilse_n_d

Author:Lilse_n_d
JavaとAndroid開発を初めて3か月ちょっと。
知識も経験もないですが、必死にもがいてみようと思います(笑)
それではよろしくお願いします。

検索フォーム
最新記事
最新コメント
最新トラックバック
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。