我需要在Android中创建收据布局。 这个想法很简单,一个带有锯齿形底边的矩形布局。
最好的结果是具有固定锯齿形尺寸的可绘制/布局(意思是固定的半三角形尺寸), 它会实时地根据形状的实际宽度乘以三角形的数量。如果需要,可以使用剪辑三角形。
这是一个很好的例子(编辑:我指的是底部之字形线):
我实际上并不知道如何创建它。想到9补丁,但似乎不合适。想到列表层可绘制水平偏移可能..
也许有可能创建一个带有单独缩放部分的9补丁,以保持之字形的宽高比...这也没关系。
编辑 - 答案 使用@Luksprog的评论,我轻松地重新创建了我想要的东西 这是一些代码:
图像(请注意,高度对应于源图像大小):
<ImageView
android:id="@+id/zigzag_bottom"
android:layout_width="match_parent"
android:layout_height="12dp"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/zigzag" />
绘制:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_zigzag"
android:tileMode="repeat"
android:antialias="true"
/>
答案 0 :(得分:3)
您无法为该图像创建九条路径,因为无法在垂直或水平方向上定义可伸展区域。要获得Z字形图案,您可以提取其中一个之字形牙齿(以及它的背景阴影)并将其包裹在BitmapDrawable
中,该tileMode
具有BitmapDrawable
属性,用于重复在drawable边界内包装图像。通过这种方式,将重复锯齿形,并且您将构成该模式。
请注意,高度对应于源图像大小
这是一个快乐的场景,但是当高度不匹配时,你可以使它适用于这种情况。例如,您可以将zig-zag LayerDrawable
包裹在setLayerInset()
中(以及实际的可绘制视图(对于视图区域的其余部分)),然后使用{{1}}放置drawable在底部。您还可以创建自己的drawable,通过覆盖onDraw()方法将Zig-zag图案图像放在底部。
答案 1 :(得分:0)
您可以使用用于此目的的ZigzagView。它支持上/下/左/右的锯齿形效果,并带有阴影。
添加其依赖项并加以利用:
'com.github.beigirad:ZigzagView:VERSION'
<ir.beigirad.zigzagview.ZigzagView
android:layout_width="match_parent"
android:layout_height="240dp"
app:zigzagBackgroundColor="#8bc34a"
app:zigzagElevation="8dp"
app:zigzagHeight="10dp"
app:zigzagShadowAlpha="0.9"
app:zigzagSides="top|bottom|right|left"
app:zigzagPaddingContent="16dp">
// add child view(s)
</ir.beigirad.zigzagview.ZigzagView>