111

セレクターを使用してボタンを作成しようとしています。ボタンは次の状態にすることができます。

  • 有効/無効
  • 押された/押されていない

上記の州によると。ボタンを操作する必要があります。

  • テキストの色
  • 背景画像

ボタンは無効になっていることから始まるので、無効な textColor と無効なボタンの背景が必要です。しかし、デフォルトの textColor (スタイルで指定) と背景画像は表示されません!

ここに私のセレクターbutton_selector.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_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button" />    

    <item android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@drawable/button_pressed"/>

    <item android:state_pressed="true"
        android:state_enabled="false"
        android:textColor="#9D9FA2"
        android:drawable="@drawable/button"/>

    <item android:state_pressed="false"
        android:state_enabled="true"
        android:drawable="@drawable/button"/>    

</selector>

そして、これが私のlayout.xmlでの私のボタン宣言です

    <Button android:id="@+id/reserve_button"
        android:text="@string/reserve_button"
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:paddingRight="15dp"
        android:layout_gravity="left"
        style="@style/buttonStyle"
        android:background="@drawable/button_selector" />

最後に、これが私のスタイルです (デフォルトの textColor が設定されています)。

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

 <resources>

     <style name="buttonStyle">
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">#282780</item>
      <item name="android:textSize">18sp</item>
     </style>

</resources>

助けてください!

4

5 に答える 5

271

ColorStateListさまざまな状態を識別するテキストの色も作成する必要があります。

以下をせよ:

  1. res\colorのような名前の別の XML ファイルを作成しますtext_color.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <!-- disabled state -->
      <item android:state_enabled="false" android:color="#9D9FA2" /> 
      <item android:color="#000"/>
    </selector>
    
  2. に、そのファイルstyle.xmlへの参照を次のように配置します。text_color.xml

    <style name="buttonStyle" parent="@android:style/Widget.Button">
      <item name="android:textStyle">bold</item>
      <item name="android:textColor">@color/text_color</item>
      <item name="android:textSize">18sp</item>
    </style>
    

これで問題が解決するはずです。

于 2012-06-27T11:50:15.087 に答える
4

最も簡単な解決策は、ここで見たように、ボタンの背景画像にカラーフィルターを設定することです

次のようにできます。

if ('need to set button disable')
    button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
else
    button.getBackground().setColorFilter(null);

私が誰かを助けたことを願っています...

于 2013-09-29T18:34:00.017 に答える
-1
<Button android:id="@+id/reserve_button"
        android:text="@string/reserve_button"
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:paddingRight="15dp"
        android:layout_gravity="left"
        style="@style/buttonStyle"
        android:background="@drawable/button_selector" />

レイアウト xml でボタンの無効化を確認できません。これをボタン レイアウトに追加します。

android:enabled="false"

ボタンのレイアウトは、

<Button android:id="@+id/reserve_button"
        android:text="@string/reserve_button"
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="20dp"
        android:enabled="false"
        android:paddingRight="15dp"
        android:layout_gravity="left"
        style="@style/buttonStyle"
        android:background="@drawable/button_selector" />
于 2012-06-27T11:40:01.887 に答える