我正在使用LinearLayout设置具有曲线Corner的BackGround Shape。我已经创建了可绘制的XML文件。当我尝试在运行时在我的Activity中更改LinearLayout backGround颜色时,该颜色会显示在Layout中,但未应用背景形状。在这方面需要帮助
我的layout.xml文件:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/month_card"
android:backgroundTint="@drawable/circle_corner_rectangle"
app:backgroundTintMode="src_over">
shape.xml文件
<shape android:shape="rectangle" >
<corners android:radius="500dip" />
<stroke android:width="2dip" android:color="@color/colorPrimary" />
<gradient android:angle="-90"/>
</shape>
最后在活动中的运行时对其进行设置
layout.setBackgroundColor(colorList.get(position));
答案 0 :(得分:1)
使用
final int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.circle_corner_rectangle)
);
} else {
layout.setBackground(ContextCompat.getDrawable(context,R.drawable.circle_corner_rectangle));
}
代替
layout.setBackgroundColor(colorList.get(position));
答案 1 :(得分:0)
尝试此代码
circle_corner_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="#E0F2F1" />
<corners android:radius="6dp"/>
</shape>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/month_card"
android:backgroundTint="@drawable/circle_corner_rectangle">
答案 2 :(得分:0)
也许这是您的情况
val shape = GradientDrawable()
shape.shape = GradientDrawable.RECTANGLE
shape.setStroke(mStrokeWidth!!,mStrokeColor!!)
shape.cornerRadius = 2f
imageView.background = shape
此代码在kotlin中
答案 3 :(得分:0)
只需尝试,
layout.setBackgroundColor(Color.parseColor("#20A4E8"));
(or)
layout.setBackgroundColor(Color.BLUE);
只需添加所需的另一个xml文件,然后在运行时添加此代码
layout.setBackgroundTintList(getContext.getResources().getColorStateList(R.color.your_xml_name));
答案 4 :(得分:0)
尝试一下:
Drawable drawable = yourView.getBackground();
try {
drawable.setColorFilter(Color.parseColor(yourColor), PorterDuff.Mode.MULTIPLY);
} catch (Exception e) {
e.printStackTrace();
}