Android:バックグラウンドセレクタ-selector

11461 ワード

概要
drawable/xxx.xmlで構成すると、selectorを構成することで、システムの実行時にコントロールオブジェクトの状態に応じて対応する画像、文字などを使用することができます.
selectorでの一般的なプロパティ
android:state_selectedコントロールの選択状態はtrueまたはfalseです.

android:state_focusedコントロールは、trueまたはfalseのフォーカス状態を取得します.

android:state_pressedコントロールクリック状態、trueまたはfalse

android:state_Enabledコントロールのイネーブル状態はtrueまたはfalse

android:state_checkableコントロールは、trueまたはfalseのステータスをチェックできます.

android:state_checkedコントロールはtrueまたはfalseの状態をチェックします.

注:ステータス記述では、現在のステータスに一致する最初のitemが使用されます.したがって、最初のitemにステータスプロパティがない場合は、毎回使用されるので、デフォルトの値は常に最後にする必要があります.
android:window_focusedアプリケーションウィンドウフォーカスステータス、trueまたはfalse

android:color特定の状態の色を定義する
は16進数色です.この色はrgb値で指定され、alpha付きで、「#」で始まる必要があります.その後、alpha-red-green-blue情報に従います.フォーマットは次のとおりです.
#rgb

#argb

#rrggbb

#aarrggbb



selectorを使用して背景を設定する
以下のXMLを.xmlファイル(list_item_bg.xmlなど)では、実行時にListViewのリスト項目の状態に応じて対応するバックグラウンドピクチャが使用されます.
drawable/list_item_bg.xml
<?xml version="1.0" encoding="utf-8" ?>   

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <!--          -->  

  <item android:drawable="@drawable/pic1" />

 

  <!--            -->  

  <item android:state_window_focused="false" 

        android:drawable="@drawable/pic1" />   

 

  <!--                     -->  

  <item android:state_focused="true" android:state_pressed="true"   

        android:drawable= "@drawable/pic2" />  

 

  <!--               -->  

  <item android:state_focused="false" android:state_pressed="true"   

        android:drawable="@drawable/pic3" />   

 

  <!--          -->  

  <item android:state_selected="true"   

        android:drawable="@drawable/pic4" />   

 

  <!--            -->  

  <item android:state_focused="true"   

        android:drawable="@drawable/pic5" />   

</selector>

使用方法
1つ目はlistviewでandroid:listSelector='@drawable/list_を構成することですitem_bg”

2つ目はlistviewのitemに属性android:background='@drawable/list_を追加することですitem_bg”

3つ目はjavaコードで使用します.
Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);

listview.setSelector(drawable);


注意:リストが黒い場合は、次のコードを付けて透明にする必要があります.
android:cacheColorHint="@android:color/transparent"

selectorを使用してフォント色を設定する
drawable/button_font.xml
<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true" android:color="#FF0000" />

    <item android:state_focused="true" android:color="#00FF00" />

    <item android:state_pressed="true" android:color="#0000FF" />

    <item android:color="#000000" />

</selector>

使用方法
android:textColor="@drawable/button_color"

より複雑な効果
グラデーションなど、より複雑な効果を実現することもできます.drawable/button_color.xml
<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">

        <!--    button   pressed       。-->

        <shape>

            <gradient android:startColor="#8600ff" />

            <stroke android:width="2dp" 

                    android:color="#000000" />

            <corners android:radius="5dp" />  

            <padding android:left="10dp" 

                     android:top="10dp"

                     android:bottom="10dp" 

                     android:right="10dp"/>  

        </shape>

    </item>

    <item android:state_focused="true">

        <!--    button   focus     -->

        <shape>

            <gradient android:startColor="#eac100"/>

            <stroke android:width="2dp" 

                    android:color="#333333"  

                    color="#ffffff"/>

            <corners android:radius="8dp" />   

            <padding android:left="10dp" 

                     android:top="10dp"

                     android:bottom="10dp" 

                     android:right="10dp"/>

        </shape>

    </item>

</selector> 

使用方法
android:background="@drawable/button_color"

android:focusable="true"