1. ホーム
  2. android

[解決済み] Android: セレクターの無効化されたボタンのtextColorが表示されない?

2022-10-14 16:37:49

質問

セレクタでボタンを作りたいのですが、ボタンは以下の状態を持つことができます。

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

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

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

ボタンは無効化されているので、無効化された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>

助けてください!

どのように解決するのですか?

を作成する必要があります。 ColorStateList を作成して、異なる状態を識別するためのテキスト色を指定する必要があります。

次のようにしてください。

  1. に別の XML ファイルを作成します。 res\color のような名前のファイルを作成します。 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>
    
    

これであなたの問題は解決するはずです。