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

如何在Android中为自定义视图绘制边框?,android,android-layout,border,Android,Android Layout,Border,我已经创建了一个从ViewGroup扩展而来的CustomView类。我的想法是将这些自定义视图像表格中的单元格一样排列。我为每个CustomView添加了一个文本块作为子对象,并且有一个变量索引来维护表中单元格的索引。我的要求是为CustomView绘制右边框和下边框,使其看起来像一张表。我尝试创建一个xml可绘制文件,如/res/drawable/textlines.xml,并将其指定为CustomView的后台属性 这是我试过的代码。但这在四个方面都划定了边界。然而,我只需要右边框和底部边

我已经创建了一个从ViewGroup扩展而来的CustomView类。我的想法是将这些自定义视图像表格中的单元格一样排列。我为每个CustomView添加了一个文本块作为子对象,并且有一个变量索引来维护表中单元格的索引。我的要求是为CustomView绘制右边框和下边框,使其看起来像一张表。我尝试创建一个xml可绘制文件,如/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>


请不要建议将左边框和上边框设置为负值。我认为这不是达到这一要求的正确方法。请为我推荐一些解决方法。

您可以在需要的一侧添加边框, 此外,还可以控制每一侧的各种参数,例如边框的颜色或厚度。 向右侧和底部添加边框的示例:

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

当您拥有自定义视图时,您可以覆盖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);
}