2016-11-20 81 views
1

我想向我的TableLayout添加清晰的分隔线。无法将垂直分隔线添加到TableLayout Android

TableLayout看起来像这样:

Table Layout

但我想每排两个textview S之间添加一行(分频器)。我曾尝试在两个textview之间放置一个View,但它延伸了这一行。

这里是我的上述布局代码:

<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

这是主要的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

+0

感谢您帮助我,但我需要在第一个textview旁边的分隔符不在中间。我怎样才能做到这一点? 我试过android:showdividers =“开始”,但它仍然在中间显示垂直分隔线。 –

+0

亲爱的玩textview的重量。尝试权重1.5和0.5, –

+0

根据此代码在具有水平方向的内部布局中添加weightSum并更改文字查看的权重。 <的LinearLayout 机器人:weightSum = “2” 机器人:showDividers = “中间”> < /的LinearLayout> –

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