戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10

スポンサーサイト

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

状態リスト:selector

Androidアプリを触っていると ListView や Button など未選択・選択中で色や画像が変わることがあります。
これは selector を使うことで設定することができます。

参考:
ソフトウェア技術ドキュメントを勝手に翻訳 - 7.5.2 カラー状態リストリソース
ソフトウェア技術ドキュメントを勝手に翻訳 - 7.5.3 Drawable リソース

■ selector 定義 -----------------------------------------
selector はXMLで定義します。
設定は上が優先されるので、下にいくほど設定を少なくすることができます。

【背景色の場合】
<item> タグに <color> タグを追加して記述する。
res/color/selector_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false"
android:state_selected="false">
<color android:color="#f000" />
</item>
<item android:state_pressed="false"
android:state_selected="true">
<color android:color="#ff00" />
</item>
<item android:state_pressed="true">
<color android:color="#f0f0" />
</item>
</selector>


【文字色の場合】
色は <item> タグに記述する。
res/color/selector_text.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#ff0f"
android:state_pressed="false"
android:state_selected="false"/>
<item android:color="#fff0"
android:state_pressed="false"
android:state_selected="true"/>
<item android:color="#f0ff"
android:state_pressed="true"/>
</selector>


【描画(drawable)を指定する場合】
res/drawable/selector_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/color_black"
android:state_pressed="false"
android:state_selected="false"/>
<item android:drawable="@android:drawable/list_selector_background"
android:state_pressed="false"
android:state_selected="true"/>
<item android:drawable="@android:drawable/list_selector_background"
android:state_pressed="true"/>
</selector>



■ selectorの使い方 -----------------------------------------
【XMLで静的に指定】

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_background"
android:textColor="@drawable/selector_text"
android:text="TextView"/>


Javaで文字色を指定するときは Resources#getColorStateList(int id) を使います。
Resources#getColor(int id) で指定すると初期状態以外の色変更が行われません。
【Javaで動的に指定】

// TextViewを生成する
TextView text = new TextView(this);

// 背景色を設定する
text.setBackgroundResource(R.color.selector_background);
//text.setBackgroundResource(R.drawable.selector_drawable);

// 文字色を設定する
text.setTextColor(getContext().getResources().getColorStateList(R.color.selector_text));
スポンサーサイト

Comments

Leave a Comment


Body
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。