私が言ったら
button.setBackgroundColor(Color.BLUE);
ボタンの形状がデフォルトの形状から長方形に変わります。元の形に影響を与えずにボタンの色を変えたい。私を助けてください。
私が言ったら
button.setBackgroundColor(Color.BLUE);
ボタンの形状がデフォルトの形状から長方形に変わります。元の形に影響を与えずにボタンの色を変えたい。私を助けてください。
Whenever you change the default background of your button the shape is going to change as the default shape is rectangle and the default background is a shape drawable with rounded corners. If you use any other background this rounded corner effect is lost.
You can achieve the same effect with any color or shape if you use a shape drawable as the background.
Here is how you can achieve this:
sample code for shape drawable:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid
android:color="#f8f8f8"/>
<corners
android:radius="4dp"/>
<padding
android:left="10dp"
android:right="10dp"
android:top="5dp"
android:bottom="5dp"/>
<stroke
android:width="1dp"
android:color="#aeaeae"/>
</shape>
If you want to have a button with a selector then use this xml as the background
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true">
<shape >
<solid
android:color="#ff0000" />
<stroke
android:width="1dp"
android:color="#ff0000" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp" />
</shape>
</item>
<item >
<shape >
<gradient
android:startColor="#ff2727"
android:endColor="#890000"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#620000" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
This is a selector xml with items as the different shape drawables. If the button is pressed that is the button's state is state_pressed then the top shape drawable is used else the bottom shape drawable is used.
I hope this will help.
ほんの数分前に同じ問題に直面していました。android:backgroundTint
代わりに、レイアウト ファイルの XML でプロパティを使用すると、問題が解決します。ボタンは元の形状を保持し、波及効果も失われません。
XML は次のようになります。
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me!"
android:textColor="#FFF"
android:backgroundTint="#2196f3" />
デフォルトでカラーオブジェクトを使用する場合、Androidシステムはペイントオブジェクトを使用してボタンを塗りつぶし、ペイントオブジェクトは長方形、曲線ではなく円形状のみを塗りつぶすことができます本当に色と曲線形状でボタンを表現したい場合は、カスタムビューを使用します(キャンバス)
独自のカスタム ボタンを作成できます。
ヘルプについては、以下のリンクを確認してください。
それは古い質問ですが、将来の探求者にとって、これは私にとってはうまくいきました...
Drawable では、ボタンの形状は次のとおりです。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:topRightRadius="10dp"
android:topLeftRadius="10dp" />
</shape>
ボタンの私のlayout.xmlで:
<Button
android:id="@+id/button"
android:layout_width="150dp"
android:layout_height="38dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/buttonshape"
android:backgroundTint="@color/colorButtonOrange"
android:text="@string/button_text"
android:textColor="@color/colorWhite"/>
を使用するandroid:backgroundTint
と、アクティビティが開始されるとボタンがオレンジ色になります。
私のアクティビティでは、ボタンの色を 1 行だけ変更します。
button.getBackground().setColorFilter(Color.GREY, PorterDuff.Mode.SRC_ATOP);
「setBackgroundColor」を使用してビューの形状を変更したときに、同じ問題が発生しました。「setTint」で解決しました
あなたのlayout.xmlでこれを確認してください
android:背景="*****"