web-dev-qa-db-ja.com

Android:セレクターの無効なボタンのtextColorが表示されませんか?

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

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

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

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

ボタンは無効化された状態から開始されるため、無効化された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>

助けてください!

85
Nouran H

また、さまざまな状態を識別するテキストの色に対して 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>
    

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

222
Adil Soomro

1./res /フォルダーにカラーフォルダーを作成し、xmlでカラーフォルダーを作成します。

text_color_selector.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="#776678" /> 
 <item Android:color="#ffffff"/>
</selector>

2.Now xmlレイアウトを作成:

 <Button

        Android:id="@+id/button_search"

        Android:layout_width="652dp"

        Android:layout_height="48dp"

        Android:layout_alignParentLeft="true"

        Android:layout_alignParentTop="true"

        Android:layout_marginTop="18dp"

        Android:background="@Android:color/transparent"

        Android:text="Hello Bhaskar"

        Android:textColor="@color/text_color_selector"/>  
5

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

次のようにできます:

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

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

4
Woody