我创建了一个从ViewGroup扩展的 CustomView类。我的想法是将这些CustomViews像单元格一样安排在一个表格中。我为每个CustomViews 添加了一个 TextBlock作为子项,并且有一个变量索引来维护表中单元格的索引。我的 要求是为CustomViews 绘制右边框和底边框,使其看起来像一张桌子。我尝试创建一个xml drawable,例如/res/drawable/textlines.xml,并将其指定为我的CustomView的后台属性。
这是我尝试过的代码。但是这会在四个方面划出界限。但是我只需要右边和右边边框。还有其他方法可以达到这个目的吗?
<item android:right="1dp" android:bottom="1dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="@android:color/black" />
<solid android:color="@android:color/transparent" />
</shape>
</item>
请不要建议将左边框和上边框设为负值。我认为这不是实现这一要求的正确方法。请告诉我一些解决方法来实现这一目标。
答案 0 :(得分:4)
当您拥有自定义视图时,您可以覆盖onDraw并在那里绘制线条。这是一个例子:
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor( Color.RED );
paint.setStrokeWidth( 1.5f );
paint.setStyle( Paint.Style.STROKE );
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
}
答案 1 :(得分:0)
您可以在所需的一侧添加边框, 此外,您可以控制每侧的各种参数,例如边框的颜色或粗细。 向右边添加边框和botoom的示例:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#FF0000" />
</shape>
</item>
<item android:left="1dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFDDDDDD" />
<solid android:color="#000000" />
</shape>
</item>
<item android:bottom="1dp">
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFDDDDDD" />
<solid android:color="#00000000" />
</shape>
</item>
</layer-list>