<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<stroke Android:width="1px" Android:color="#696969"/>
</shape>
このコードはボタンを動的に作成するために使用されます。問題は、背景色を設定し、背景ドローアブルも設定したいことです。
Button btnTag = new Button(alltable.this);
btnTag.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
try {
btnTag.setWidth(130);
btnTag.setBackground(getResources().getDrawable(R.color.blue));
} catch (Exception e){
e.printStackTrace();
}
これは、btnの背景色を設定してから、ドローアブルを使用したいクラスです。
Drawable(files_bg.xmlなど)フォルダーにリソースを作成し、レイアウトの背景として設定します。
レイヤーリストで2つのアイテムを使用します。1つは形状の単色用で、もう1つはビットマップ用です。
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="rectangle">
<solid Android:color="@color/totalFilesBgColor" />
</shape>
</item>
<item>
<bitmap
Android:src="@drawable/bg_icon"
Android:tileMode="disabled" />
</item>
</layer-list>
そして今、レイアウトまたはあなたが使用しているところならどこでも、drwableをbakcgroundとして設定します。
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@drawable/files_bg">
</LinearLayout>
このファイル(rectangle.xml)はドローアブルフォルダに配置されます。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="#FF4081"/>
</shape>
コード内のこの行を変更します。
btnTag.setBackground(getResources().getDrawable(R.drawable.rectangle,null));\\API level 21 and higher, otherwise
getResources().getDrawable(R.drawable.rectangle).
少し遅れましたが、同じ問題が発生し、以下に説明するように解決しました。
まず、ドローアブルを入手します。
Drawable d = getResources().getDrawable(R.drawable.shape_rectangle);
次に、カスタムカラーを適用します。
d.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
次に、それをビュー/ボタンの背景として設定します。
btn.setBackground(d);
新しいドローアブルを作成し、それを背景に割り当てることができます。つまり.
Drawable drawable = new GradientDrawable();
drawable.shape = GradientDrawable.RECTANGLE;
drawable.setStroke(Utils.toPx(1), Color.parseColor("#696969") );
btnTag.setBackground(drawable);