11

私が言ったら

 button.setBackgroundColor(Color.BLUE);

ボタンの形状がデフォルトの形状から長方形に変わります。元の形に影響を与えずにボタンの色を変えたい。私を助けてください。

4

9 に答える 9

9

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:

  1. Create a shape drawable.
  2. Use this drawable as the button's background.


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.

于 2012-07-27T06:22:03.563 に答える
2

ほんの数分前に同じ問題に直面していました。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" />
于 2016-11-23T20:44:41.080 に答える
0

デフォルトでカラーオブジェクトを使用する場合、Androidシステムはペイントオブジェクトを使用してボタンを塗りつぶし、ペイントオブジェクトは長方形、曲線ではなく円形状のみを塗りつぶすことができます本当に色と曲線形状でボタンを表現したい場合は、カスタムビューを使用します(キャンバス)

于 2012-07-27T05:38:28.460 に答える
0

独自のカスタム ボタンを作成できます。

ヘルプについては、以下のリンクを確認してください。

http://www.dibbus.com/2011/02/gradient-buttons-for-android/

于 2012-07-27T05:49:31.643 に答える
0

それは古い質問ですが、将来の探求者にとって、これは私にとってはうまくいきました...

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);
于 2020-04-01T15:14:15.933 に答える
0

「setBackgroundColor」を使用してビューの形状を変更したときに、同じ問題が発生しました。「setTint」で解決しました

于 2020-07-27T09:06:26.167 に答える
0

あなたのlayout.xmlでこれを確認してください

android:背景="*****"

于 2014-12-01T04:24:09.437 に答える