无法将Vertical Divider添加到TableLayout Android

时间:2016-11-20 20:12:50

标签: android xml android-layout tablelayout android-tablelayout

我想在我的TableLayout添加verdical divider。

我的TableLayout看起来像这样:

Table Layout

但我想在每行的两个textview之间添加一行(分隔符)。我尝试在两个View之间放置一个textview,但它会拉伸该行。

以下是我上面布局的代码:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/row"
android:layout_gravity="center"
android:showDividers="beginning"
android:orientation="horizontal"
android:stretchColumns="1"
android:background="@drawable/custom_background">

<TableRow>
    <TextView
        android:text="Name"
        android:padding="3dip" />

    <TextView
        android:text="Imran"
        android:gravity="left"
        android:padding="3dip" />
</TableRow>

<View
    android:layout_height="2dip"
    android:background="#FF909090" />

<TableRow>
    <TextView
        android:text="Name"
        android:padding="3dip" />

    <TextView
        android:text="Test"
        android:gravity="left"
        android:padding="3dip" />
</TableRow>

<View
    android:layout_height="2dip"
    android:background="#FF909090" />

<TableRow>
    <TextView
        android:text="Name"
        android:padding="3dip" />

    <TextView
        android:text="Test"
        android:gravity="left"
        android:padding="3dip" />
</TableRow>

我想实现以下布局:

Table Layout

有人可以帮助我使用TableLayout或其他任何方式实现上述布局吗?

2 个答案:

答案 0 :(得分:4)

我认为这个解决方案要容易得多。

你的TableLayout:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_margin="10dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:divider="@drawable/table_divider"
    android:showDividers="middle"
    android:shrinkColumns="*"
    android:background="@drawable/rounded_corners">

    <TableRow
        android:divider="@drawable/table_divider"
        android:showDividers="middle"
        android:weightSum="3">

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="3dp"
            android:text="Column1"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="3dp"
            android:text="Column2"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="3dp"
            android:text="Column3"
            android:textStyle="bold" />
    </TableRow>

    <TableRow
        android:divider="@drawable/table_divider"
        android:showDividers="middle"
        android:weightSum="3">

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="3dp"
            android:text="Column1" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="3dp"
            android:text="Column2" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="3dp"
            android:text="Column3" />
    </TableRow>

</TableLayout>

您的背景:

<?xml version="1.0" encoding="utf-8"?>

<solid android:color="#00000000" />
<stroke
    android:width="1dp"
    android:color="@android:color/black" />

<corners
    android:bottomLeftRadius="10dp"
    android:bottomRightRadius="10dp"
    android:topLeftRadius="10dp"
    android:topRightRadius="10dp" />

分隔线的形状:

table_divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size android:height="1dp" />
    <size android:width="1dp" />
    <solid android:color="@android:color/black" />
</shape>

结果:

Result

如果您不需要背景,可以在TableLayout和每个TableRow中执行此操作:

android:showDividers="beginning|middle|end"

没有背景的结果:

Result without the background

答案 1 :(得分:2)

这是主要的xml文件。你可以使用

    android:divider="@drawable/vertical_divider"
    android:showDividers="middle"

在线性布局中显示垂直分隔线。我设计了你的布局,我不喜欢桌面布局,你可以试试线性布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corner"
android:orientation="vertical">


 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     android:orientation="horizontal"
     android:divider="@drawable/vertical_divider"
    android:showDividers="middle">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="16dp"
        android:text="Lorem ipsum" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="16dp"
        android:text="Lorem ipsum" />
   </LinearLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#FFCCCCCC"></View>

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="@drawable/vertical_divider"
    android:orientation="horizontal"
    android:showDividers="middle">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="16dp"
        android:text="Lorem ipsum" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="16dp"
        android:text="Lorem ipsum" />
   </LinearLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#FFCCCCCC"></View>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="@drawable/vertical_divider"
    android:orientation="horizontal"
    android:showDividers="middle">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="16dp"
        android:text="Lorem ipsum" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="16dp"
        android:text="Lorem ipsum" />
   </LinearLayout>

   <View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#FFCCCCCC"></View>

  </LinearLayout>

这是

的代码

rounded_corner.xml

  <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android">

  <solid android:color="#00000000" />
  <stroke
    android:width="1dp"
    android:color="#bababa" />

  <padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" />

  <corners
    android:bottomLeftRadius="25dip"
    android:bottomRightRadius="25dip"
    android:topLeftRadius="25dip"
    android:topRightRadius="25dip" />
  </shape>

这是

的代码
vertical_divider.xml

   <?xml version="1.0" encoding="UTF-8"?>
   <inset xmlns:android="http://schemas.android.com/apk/res/android"
   android:insetBottom="2dp"
   android:insetTop="2dp">
   <shape>
      <size android:width="1dp" />
      <solid android:color="#FFCCCCCC" />
   </shape>
  </inset>

将您的颜色代码放在上面:)

输出

enter image description here