264

次のように、さまざまな状態で描画可能な背景を変更するボタンを作成しました。

<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>

ここでの問題は、ドローアブルの場合と同じようにtextColorも変更しようとしているのに、変更できないことです。私はすでにandroid:textColorとandroid:colorを試しましたが、秒が私の背景を変更している間、最初のものは機能しません。

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

<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"
   />

誰か手がかりがありますか?

4

5 に答える 5

594

たとえば、背景の場合と同じように、ボタンにステートフルカラーを作成します。

<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)のファイルに配置します。次に、ドローアブルをテキストの色として設定します。

android:textColor="@drawable/button_text_color"
于 2011-01-14T15:50:23.620 に答える
18

それを行う別の方法はあなたのクラスにあります:

import android.graphics.Color; // add to top of class  

Button btn = (Button)findViewById(R.id.btn);

// set button text colour to be blue
btn.setTextColor(Color.parseColor("blue"));

// set button text colour to be red
btn.setTextColor(Color.parseColor("#FF0000"));

// set button text color to be a color from your resources (could be strings.xml)
btn.setTextColor(getResources().getColor(R.color.yourColor));

// set button background colour to be green
btn.setBackgroundColor(Color.GREEN);
于 2013-07-30T14:44:05.483 に答える
5

わかりました。最初に1に進みます。res-valuseとopencolors.xml2.定義されたテキストの1つをコピーします。たとえば#FF4081と名前を変更します。たとえば、名前を白に変更し、その値を変更します。たとえば、このような白い値

<color name="White">#FFFFFF</color>

次に、ボタン内にこの行を追加します

 b3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.White));

ok b3は私のボタンの名前なので、urボタンの名前を変更すると、他のすべてのボタンは同じになります。別の色を変更した場合は白を使用し、次に白を自分の色の名前に変更しますが、最初にその色を色で定義します。私がpont2で説明したようなxml

于 2017-06-28T05:35:12.800 に答える
1

ボタンのテキストの色を変更する

このメソッドは現在非推奨になっているため

button.setTextColor(getResources().getColor(R.color.your_color));

私は以下を使用します:

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));
于 2016-08-24T12:11:43.417 に答える
0

getColorStateListこのように使用します

setTextColor(resources.getColorStateList(R.color.button_states_color))

それ以外のgetColor

setTextColor(resources.getColor(R.color.button_states_color))
于 2019-05-22T20:13:32.657 に答える