web-dev-qa-db-ja.com

Androidのカスタマイズボタン。テキストの色を変える

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

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

ここでの問題は、私がドロウアブルと同じように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"
   />

誰かが手がかりを得ましたか?

237
dwbrito

背景色と同じように、ボタンにステートフル色を作成します。次に例を示します。

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

それを行うもう1つの方法は、クラスにあります。

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);
15

非常に単純な最初の1。行きます。colors.xmlを開く2。定義されたテキストの2コピー1は、例えば#FF4081と名前を変更する私は白に変更し、私は#FFFFFFに変更このような白の値

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

それからあなたのボタンの中にこの行を追加してください

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

oK b3は私のボタンの名前なので、あなたが違う色を変えたら白を使って色の名前に白を変えれば、最初にあなたは色でその色を定義します。私はポン2で説明したようなXML

3

ボタンの文字色を変える

このメソッドは現在推奨されていないため

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

私は以下を使います:

button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));
1
Gjoko Bozinov

getColorStateListを次のように使用してください。

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

getColorの代わりに

setTextColor(resources.getColor(R.color.button_states_color))
0
Li Jin