Androidカスタマイズボタン。テキストの色を変更します
-
11-10-2019 - |
質問
このようにして、さまざまな状態で背景を描画可能なボタンを作成しました。
<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 -->
ここでの問題は、描画可能なものと同じようにテキストコラーを変更しようとしていることですが、できないことです。私はすでに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"
/>
誰かが手がかりを持っていますか?
解決
たとえば、バックグラウンドのためにしたように、ボタンのステートフルな色を作成します。
<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フォルダーのファイルに入れます。次に、テキストの色として描画可能を設定するだけです。
android:textColor="@drawable/button_text_color"
他のヒント
それを行う別の方法はあなたのクラスにあります:
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);
OK非常にシンプルな最初の1に移動します。res-valuse and open Colors.xml 2.Copy 1定義されたテキストのコピー#ff4081と変更名前を変更します。たとえば、ホワイトに変更して値を変更します。このような白い価値
<color name="White">#FFFFFF</color>
次に、ボタンの中にこの線を追加します
b3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.White));
OK b3は私のボタンの名前なので、urボタンの名前を変更しました他のボタンの名前は、異なる色を変更する場合は白色を使用する場合、他のボタンは同じです。 XML Pont 2で説明したように
ボタンのテキスト色の変更
この方法は今では非難されているためです
button.setTextColor(getResources().getColor(R.color.your_color));
以下を使用します。
button.setTextColor(ContextCompat.getColor(mContext, R.color.your_color));
使用する getColorStateList
このような
setTextColor(resources.getColorStateList(R.color.button_states_color))
それ以外の getColor
setTextColor(resources.getColor(R.color.button_states_color))
所属していません StackOverflow