2014-10-18 49 views
6

我需要在Android中创建收据布局。 这个想法很简单,有一个曲折的底边的矩形布局。Android收据/锯齿形/布局

最好的结果将是一个具有固定曲折大小(意思是固定的半三角大小)的可绘制/布局,其将实时地乘以根据形状的实际宽度的三角形量。如果有必要,也可以使用剪辑来剪辑三角形。

这里是一个很好的例子(编辑:我指的底部曲折线):

enter image description here

其实我已经对如何创建它没有坚实的想法。想到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

Thx,但你指的是列表,我指的是底部之字形线...... btw谢谢你的编辑! 实际上,也许有可能用水平ListView实现!:) – 2014-10-18 16:53:40

+0

您无法为该图像创建九条路径。你可以简单地选择其中一个曲折形状的牙齿,并将其用于可重绘模式的可绘制位图中。 – Luksprog 2014-10-18 17:29:08

+0

@Luksprog完美!非常简单:P您能否回复我的意见,以便我可以投票答复?如果你愿意,你可以使用我的答案代码,它可以帮助其他人。 – 2014-10-18 18:11:33

回答

2

您不能为九路图像,因为无法在垂直或水平面上定义可拉伸区域。要获得该之字形图案,您可以提取其中一个之字形齿(以及它的背景阴影)并将其包装在BitmapDrawable中,该具有tileMode属性,用于在可绘制边界内重复包装图像。这样锯齿形的牙齿会重复出现,你就可以组成这个图案。

注意,高度对应于源图像大小

这是一个幸福的场景,但你可以把它的情况下工作时,高度不匹配。例如,您可以将Zig-zag BitmapDrawable包含在LayerDrawable(以及实际视图可绘制(对于其余视图区域)),然后使用setLayerInset()将绘图放置在底部。您也可以创建自己的drawable,通过覆盖onDraw()方法将Z形图案图像置于底部。

+0

这个想法很好,你有没有这方面的例子。 – 2015-11-30 07:43:10

+2

请看这个问题...答案是(编辑)那里:) – 2015-11-30 17:54:14

+0

https://medium.com/android-dev-br/repetir-at%C3%A9-encaixar-390ade3f57bd – 2016-07-24 14:55:50