3

我想画一个有洞的矩形。我试图通过使用形状矩形来实现这一点。

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

我试图弄清楚如何在绘制此矩形时更改笔划宽度,以便矩形应具有例如:顶部和底部边缘的笔划宽度为 50 dp,但左右边缘的笔划宽度为 20 dp。

我真的很感谢你在这方面的帮助。

4

3 回答 3

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"
于 2015-12-16T22:16:27.073 回答
0

我假设,该形状被用作视图的背景(例如 imageView)。所以首先Drawable从 中imageView获取对象并从中获取Paint对象。然后你可以修改你想要的任何属性。

Drawable background = imageView.getBackground();
if (background instanceof ShapeDrawable) {
    // cast to 'ShapeDrawable'
    ShapeDrawable shapeDrawable = (ShapeDrawable)background;
    shapeDrawable.getPaint().setStrokeWidth(...);
}

此处的相关问题:以编程方式设置 android 形状颜色

于 2015-12-16T22:04:59.813 回答
0

感谢你的帮助。我最终覆盖了 onDraw() 以清除布局的背景颜色,以使用 setXfermode() 创建矩形孔。

于 2015-12-23T06:48:01.330 回答