2011-10-13 2 views
5

私はボタンのAndroid州のリストを管理するいくつかのトラブルがあります。私は、さまざまな州のためのいくつかの形状ドロー可能な項目を指定しましたが、私は現在の状態に応じてtextColorを変更する必要があります。Android - どのように結合するドローワブルとテキストカラーの異なるボタンの状態?

私の実際の状態のリストXMLは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>  
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
     <shape> 
      <gradient 
       android:startColor="@color/white" 
       android:endColor="@color/light_gray" 
       android:angle="270" /> 
      <stroke 
       android:width="3dp" 
       android:color="@color/classic_red1" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 

    <item> 
     <shape> 
      <gradient 
       android:startColor="@color/classic_red1" 
       android:endColor="@color/classic_red2" 
       android:angle="270" /> 
      <stroke 
       android:width="2dp" 
       android:color="@color/white" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 

私はこれらの2つの状態に基づいての、textColorを変更することも必要です。 ありがとうございます。ボタンBG用

答えて

24

セレクタ:ボタンテキストカラーの

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
    <shape> 
     <gradient 
      android:startColor="@color/white" 
      android:endColor="@color/light_gray" 
      android:angle="270" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/classic_red1" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 

</item> 

<item android:state_focused="true"> 
    <shape> 
     <solid android:color="#424242" /> //another custom shape here for focus state 
    </shape> 
</item> 

<item> 
    <shape> 
     <gradient 
      android:startColor="@color/classic_red1" 
      android:endColor="@color/classic_red2" 
      android:angle="270" /> 
     <stroke 
      android:width="2dp" 
      android:color="@color/white" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 

</item> 

セレクタ:

+0

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="@color/white" /> <!-- pressed --> <item android:color="@color/black" /> <!-- default/unchecked --> </selector> 
Aaargh!なんて愚かなんだ...私はバックグラウンドの描画可能なリソースにすべてを入れなければならないと思った。どうもありがとう! –

+0

あなたは大歓迎です! :) – androidu

+0

とBGセレクタは、drawableディレクトリの下のxmlです。ここで、テキストカラーの1つは、カラーディレクトリのxmlです。http://stackoverflow.com/questions/8743584/how-to-set-the-textを参照してください。 -st-of-a-button-in-selectors – jobwat