web-dev-qa-db-ja.com

Androidボタンの背景色

私はアプリでボタンの背景色を設定しようとしていますが、希望する結果を達成できません...

設定しようとしている色はholo_green_light(#ff99cc00)です。それをするために、私はsetColorFilter(0xff99cc00, PorterDuff.Mode.MULTIPLY);を使用しています

私が得る色はholo_green_lightではなく、ライトグレーとholo_green_lightの混合です。

LightingColorFilterを使用してみましたが、ほとんど成功しませんでした。

プログラムでそれを行う方法はありますか?ボタンはボタンのように見え、必要な色の平らな長方形ではありません。

49
user2260040

ボタンは、1つの色を変更するよりも複雑です...

Androidボタンは、かなり多くの9パッチと状態ドロウアブルを使用して作成されます。 Android Holo Colors を見て、それらを生成する必要があります。「Color Button」を選択すると、必要な画像とxmlが生成されます...

18
Tonithy

これが、異なる色のカスタムボタンを作成する私の方法です。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<stroke Android:width="3dp"
        Android:color="#80FFFFFF" />

  <corners Android:radius="25dp" />

  <gradient Android:angle="270"
            Android:centerColor="#90150517"
            Android:endColor="#90150517"
            Android:startColor="#90150517" />
</shape>

このようにして、背景として設定します。

<Button Android:id="@+id/button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Button"
        Android:layout_marginBottom="25dp"
        Android:layout_centerInParent="true"
        Android:background="@drawable/button"/>
41
Bebin T.N

一般的なスタイル(角丸など)を維持し、背景色を変更する場合は、backgroundTintプロパティを使用します。

Android:backgroundTint="@Android:color/holo_green_light"
24
Mark Proctor

ハードコーディングを気にしない場合は、これを行って〜> Android:background = "#eeeeee"を実行し、希望する16進数の色をドロップします。

このように見える...

<Button
    Android:id="@+id/button1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentRight="true"
    Android:layout_below="@+id/textView1"
    Android:text="@string/ClickMe"
    Android:background="#fff"/>
16
V.Nice

次の内容で/res/drawable/button.xmlを作成します。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" Android:padding="10dp">
<!-- you can use any color you want I used here gray color-->
 <solid Android:color="#90EE90"/> 
    <corners
     Android:bottomRightRadius="3dp"
     Android:bottomLeftRadius="3dp"
  Android:topLeftRadius="3dp"
  Android:topRightRadius="3dp"/>
</shape>

そして、次を使用できます:

<Button
    Android:id="@+id/button_save_prefs"
    Android:text="@string/save"
    Android:background="@drawable/button"/>
13
Giant

そのハードコアである必要はありません。
これを試して :

YourButtonObject.setBackground(0xff99cc00);
5
Mehdi

なぜsetBackgroundColor(getResources().getColor(R.color.holo_light_green))を使用しないのですか?

編集:Androidボタンのように見えるものが必要な場合は、グラデーションを作成し、それを背景として設定します。この例については、 this question をご覧ください。

4
Jonathan

マークプロクターの答えに加えて:

デフォルトのスタイルを維持したいが、ボタンに条件付きの色を付けたい場合は、次のようにbackgroundTintプロパティを設定するだけです。

Android:backgroundTint="@drawable/styles_mybutton"

関連ファイル/res/drawable/styles_mybutton.xmlを作成し、次のテンプレートを使用して、好みに応じて色を変更します。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <!-- Disabled state-->
    <item Android:state_enabled="false"
        Android:color="@Android:color/white">
    </item>
    <!-- Default state-->
    <item
        Android:color="#cfc">
    </item>
</selector>
0
LePatay

スタイルを維持するには、次を使用します。

int color = Color.parseColor("#99cc00");
button.getBackground().mutate().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC));
0
BluEOS