[英]How to set Corner in Drawable at runtime?
我想在运行时编辑布局的背景。 我的图像可绘制在类中,我想将图像设置为具有角点(如布局背景)。 这个怎么做?
setCornerRadius(float value)将所有四个角设置为相同的值。
因此它也具有setCornerRadii(float [] radii)方法,该方法可用于设置从左上角,右上角,右下角,左下角四个侧面的角。
setCornerRadii(float [] radii)
为4个角中的每个角指定半径。 对于每个角,数组包含2个值,[X_radius,Y_radius]。 角按左上角,右上角,右下角,左下角的顺序排列。 仅当形状的类型为RECTANGLE时,才使用此属性。
GradientDrawable drawable = (GradientDrawable) view.getBackground();
drawable.setCornerRadii(radii);
要么
float values[] = {1.1f, 2.2f, 1.5f, 3.3f};
GradientDrawable drawable = (GradientDrawable) view.getBackground();
drawable.setCornerRadii(values);
这意味着,左上角为1.1f,右上角为2.2,右下角为1.5f,最后左下角为3.3f。
尝试这个:
GradientDrawable bg = (GradientDrawable) relative_layout.getBackground();
bg.setCornerRadii();
为法线和弯曲背景创建drawables资源,并将其放置在res/drawable/
文件夹中。
例如:
box.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
</shape>
box_curved.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp" />
</shape>
然后在运行时,通过以下方式更改背景:
view.setBackground(getResources().getDrawable(R.drawable.box));
要么
view.setBackground(getResources().getDrawable(R.drawable.box_curved));
int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { setBackgroundDrawable(); } else { setBackground(); }
以编程方式创建Shape Drawable
public static void createShapeDrawable(View v, int backgroundColor, int borderColor)
{
GradientDrawable shape = new GradientDrawable();
shape.setShape(GradientDrawable.RECTANGLE);
shape.setCornerRadii(new float[] { 8, 8, 8, 8, 0, 0, 0, 0 }); // set corner Radious
shape.setColor(backgroundColor);
shape.setStroke(3, borderColor);
v.setBackgroundDrawable(shape);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.