1. ホーム
  2. アンドロイド

[解決済み】Androidのカスタマイズボタン、文字色の変更について

2022-04-06 02:49:39

質問

このように、状態によって背景の描画対象が変わるボタンを作りました。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true" android:drawable="@drawable/btn_location_pressed" /> <!-- pressed -->
     <item android:state_focused="true" android:drawable="@drawable/btn_location_pressed"/> <!-- focused -->
     <item android:drawable="@drawable/btn_location"/> <!-- default -->
</selector>

問題は、drawableと同じようにtextColorを変更しようとしているのですが、うまくいかないことです。android:textColor と android:color はすでに試しましたが、最初のものは動作せず、2番目は背景を変更しています。

次のコードは、私のレイアウトの一部です。テキストの色については、通常の状態のテキスト色に対してのみ機能し、したがって、押されている間は白い色に変更されません。

<Button android:id="@+id/location_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="5dp"
        android:background="@drawable/location"          
        android:textSize="15sp"
        android:textColor="@color/location_color"
        android:textColorHighlight="#FFFFFF"
   />

誰か手がかりはないのか?

解決方法は?

backgroundの時と同じように、ボタンにステートフルカラーを作成する、など。

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Focused and not pressed -->
    <item android:state_focused="true" 
          android:state_pressed="false" 
          android:color="#ffffff" />

    <!-- Focused and pressed -->
    <item android:state_focused="true" 
          android:state_pressed="true" 
          android:color="#000000" />

    <!-- Unfocused and pressed -->
    <item android:state_focused="false" 
          android:state_pressed="true" 
          android:color="#000000" />

    <!-- Default color -->
    <item android:color="#ffffff" />

</selector>

このxmlをres/drawableフォルダにあるファイル(res/drawable/button_text_color.xml)に格納します。そして、そのdrawableをテキスト色に設定するだけです。

android:textColor="@drawable/button_text_color"