我想绘制一个带孔的矩形。我试图通过使用Shape Rectangle来实现这一点。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="50dp"
android:color="@color/red" />
</shape>
我试图找出如何在绘制此矩形时更改笔触宽度,以便Rectangle具有例如:顶部和底部边缘上的50 dp笔划宽度,但左右边缘上的20 dp。
我真的很感谢你的帮助。
答案 0 :(得分:1)
以下是如何使用图层列表执行此操作的示例:我将更改左上角和右上角属性,如下所示:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:top="1dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/holo_blue_bright"/>
</shape>
</item>
<item android:left="3dp">
<shape android:shape="rectangle">
<gradient android:angle="270" android:startColor="#8C2300" android:endColor="#D34617"/>
</shape>
</item>
<item android:right="8dp">
<shape android:shape="rectangle">
<gradient android:angle="270" android:startColor="#000000" android:endColor="#ffc0cb"/>
</shape>
</item>
</layer-list>
将此文件称为drawable文件夹中的layers.xml。然后将其作为背景应用于您的视图:
android:background="@drawable/shape"
答案 1 :(得分:0)
我假设,形状用作视图的背景(例如imageView)。
首先从Drawable
获取imageView
对象,然后从中获取Paint
对象。然后,您可以修改任何所需的属性。
Drawable background = imageView.getBackground();
if (background instanceof ShapeDrawable) {
// cast to 'ShapeDrawable'
ShapeDrawable shapeDrawable = (ShapeDrawable)background;
shapeDrawable.getPaint().setStrokeWidth(...);
}
答案 2 :(得分:0)
感谢大家的帮助。我最终覆盖onDraw()以清除布局的背景颜色,以使用setXfermode()创建矩形孔。