如何在Android中为自定义视图绘制边框?

时间:2014-11-25 04:50:41

标签: android android-layout border

我创建了一个从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>

请不要建议将左边框和上边框设为负值。我认为这不是实现这一要求的正确方法。请告诉我一些解决方法来实现这一目标。

2 个答案:

答案 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>