2

こんにちは、ボタンの背景を設定するためのリソースを描画できる 1 つの Android アプリケーションを開発しています。そのドローアブルの開始色と終了色をプログラムで変更したい、つまりボタンクリックリスナー内のアクティビティクラスで変更したい。私のドローアブルは次のようになります:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
  <gradient android:startColor="#be584c" 
    android:endColor="#be584c"
    android:angle="270" />
  <corners android:radius="2dp" />
  <stroke android:width="1px"/>
</shape>

そして、xmlファイルでボタンの背景として設定しました。android:background="@drawable/download_button"

そして、アクティビティクラスでこのdrawableの開始色と終了色を変更したいのですが、これを行う方法. f=これを行う方法はありますか。助けが必要。ありがとうございました。

4

3 に答える 3

10

はい、可能です。これを行うには、 GradientDrawableを使用する必要があります。

int colors[] = { 0xff255779, 0xffa6c0cd };

GradientDrawable gradientDrawable = new GradientDrawable(
        GradientDrawable.Orientation.TOP_BOTTOM, colors);

view.setBackgroundDrawable(gradientDrawable);

必要に応じてカラー コードを変更します。を使用Color.parseColor("color code")しましたが、機能しません。

Orientationには次のようなオプションがあります。

GradientDrawable.Orientation.BOTTOM_TOP;
GradientDrawable.Orientation.LEFT_RIGHT;
GradientDrawable.Orientation.RIGHT_LEFT;
于 2013-07-15T09:42:46.287 に答える
1

再度作成することを気にしない場合は、チンタンのソリューションで十分ですが、パディングなどの他の属性に触れずに色を変更GradientDrawableしたい場合は、単純に を使用できます。次の例では、 、、およびを変更する方法を示しています。setColorsstartColorcenterColorendColor

int color = screenshot.getPixel(x, y);
GradientDrawable drawable = (GradientDrawable)binding.layoutStation.getBackground();
int colors[] = { color, 0xffffffff, color };
drawable.setColors(colors);
于 2018-08-09T01:40:33.000 に答える