2012-02-27 9 views
13

xmlに背景が定義されたボタンがあります。私はそれが現在の状態に基づいてボタンを色づけしたいと思います。xmlセレクタでdrawableの色合いを変更します。

ここに私のXMLファイルがあります。また、私のcolored_tint_darkcolored_tintはどちらも、私がリソースフォルダから呼び出す描画可能なイメージを描画しようとしている半透明の色です。ここに問題があります。 UIが最初にロードされると、画像には適切な色合いがありますが、押した後、押した状態には何も表示されず、通常の状態では何も表示されません。

<?xml version="1.0" encoding="utf-8"?> 

<item android:state_pressed="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> 
    <shape> 
     <gradient 
      android:endColor="@color/colored_tint" 
      android:startColor="@color/colored_tint" 
      android:angle="270" /> 
     <stroke 
      android:width="0dp" 
      android:color="@color/colored_tint" /> 
     <corners 
      android:radius="0dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

<item android:state_focused="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> 
    <shape> 
     <gradient 
      android:endColor="@color/colored_tint" 
      android:startColor="@color/colored_tint" 
      android:angle="270" /> 
     <stroke 
      android:width="0dp" 
      android:color="@color/colored_tint" /> 
     <corners 
      android:radius="0dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

<item android:drawable="@drawable/rounded_grayscale_pinstripe_button">   
    <shape> 
     <gradient 
      android:endColor="@color/colored_tint_dark" 
      android:startColor="@color/colored_tint_dark" 
      android:angle="270" /> 
     <stroke 
      android:width="0dp" 
      android:color="@color/colored_tint_dark" /> 
     <corners 
      android:radius="0dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

私はこれに対する解決策は、Javaであることを知っているが、私は特に、XMLでの解決策を探しています。ありがとう。

答えて

1

selectorで試したことがありますか?その後

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/white" android:state_pressed="true" /> 
    <item android:color="@color/white" android:state_activated="true" /> 
    <item android:color="@color/green" /> 
</selector> 

(選択されていないとき、私の例では、画像を選択したときに白、緑)

:あなたはいくつかの例HERE

12

は、セレクタtint_menu_item.xmlを作成見つけることができます

あなたのXMLでは、ImageViewに色合い属性を追加することができます:

<ImageView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:tint="@color/tint_menu_item" 
    android:src="@drawable/ic_menu_home" /> 

またの、textColorのattibuteを使用してのTextViewにこのセレクタを使用することができます。

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@color/tint_menu_item" /> 
+0

HI、私は、API 18と下部に色合いセレクターの問題を持っている[リンク](http://stackoverflow.com/questions/38673196/crash -during-inflating-view-with-vector-drawable-tint-color-selector) 問題の原因を教えてください。 – Alex

+0

android:tint属性がすべてのapisで機能しません。これを解決するには、適切な色の.pngファイルを直接作成し、ImageViewからandroid:tint属性を削除します。 –

+0

tint_menu_item.xmlはどこに配置しますか? – rraallvv

関連する問題