android - 无法将垂直分隔线添加到 TableLayout Android

标签 android xml android-layout tablelayout android-tablelayout

我想在我的 TableLayout 中添加垂直分隔符。

我的 TableLayout 看起来像这样:

Table Layout

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

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

<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 或任何其他方式实现上述布局?

最佳答案

我认为这个解决方案要简单得多。

你的表格布局:

<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

关于android - 无法将垂直分隔线添加到 TableLayout Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40708865/

相关文章:

Android Google Fit 无法读取血压值

java - Android Listview Inside viewpager 始终显示所有页面中最后一个 viewpager 页面数组列表数据

android - Styleable无法解析

java - 在 log4j2 中,我可以拥有多个同名的记录器吗?

python - 使用哪个验证 python XML api?

java - 布局无法正常工作

Android谷歌地图显示当前位置

android - 无法使用 java 在 Amazon EC2 实例上连接 MongoDB

android - 在 android 中更改聚焦 EditText 的 TextSize

android - 虽然有权限,但 SD 卡的 mkdir() 失败