设置背景颜色,并在android中使用drawable作为背景

时间:2015-12-15 12:23:10

标签: android android-layout button

<?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。

5 个答案:

答案 0 :(得分:4)

在drawable(如files_bg.xml)文件夹中创建资源,并将其设置为布局的背景。

在图层列表中使用两个项目,一个用于形状的纯色,另一个用于位图。

<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>

答案 1 :(得分:0)

此文件(rectangle.xml)放在您的drawable文件夹中。

EA.Element.SetAppearance(long Scope, long Item, long Value)

在代码中修改此行。

<?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>

答案 2 :(得分:0)

有点晚了,但是我遇到了同样的问题,我像下面描述的那样解决了它。

首先获取您的可绘制对象:

Drawable d = getResources().getDrawable(R.drawable.shape_rectangle);

然后将您的自定义颜色应用于它:

d.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);

然后将其设置为视图/按钮的背景:

btn.setBackground(d);

答案 3 :(得分:0)

您可以创建一个新的可绘制对象,并将其分配给背景。 即


Drawable drawable = new GradientDrawable();
drawable.shape = GradientDrawable.RECTANGLE;
drawable.setStroke(Utils.toPx(1), Color.parseColor("#696969") );
btnTag.setBackground(drawable);

答案 4 :(得分:0)

这对我有用

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
        <solid android:color="@color/appColor" />
        <corners android:radius="@dimen/spacing_small"/>
    </shape>
   </item>
     <item android:drawable="@drawable/add_white"/>
</layer-list>