在Android应用程序中动态更新表格布局

时间:2016-06-01 21:03:34

标签: java android android-layout android-tablelayout

我正在构建一个Android应用程序,它可以动态更新带有表行的表格布局。我这样做的方法是通过一个固定的表格行布局,我用内容填充,然后将其插入到表格布局中,它显示如下所示。

TableLayout1

我遇到的问题是,当我添加一行包含中间部分较长的内容并在其中一个文本视图上创建多行时,它会以某种方式缩短包含两个文本的布局的宽度其他行(中间部分)的视图,特别是那些具有单行的视图,例如下图中的第一行和第二行。

TableLayout2

您可以在下面找到代码。如果您需要更多代码或示例,请告诉我。

row_main.xml - 行的固定布局。

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableRowMain1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_margin="2dp"
    android:gravity="center"
    android:layout_gravity="center" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_gravity="center" >

        <TextView
            android:id="@+id/textViewEmployeeName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            android:layout_margin="2dp"
            android:gravity="center"
            android:layout_gravity="center"/>

        <TextView
            android:id="@+id/textViewClientId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            android:layout_margin="2dp"
            android:gravity="center"
            android:layout_gravity="center"/>

        <TextView
            android:id="@+id/textViewTable"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            android:layout_margin="2dp"
            android:gravity="center"
            android:layout_gravity="center"/>

    </LinearLayout>

    <TextView
        android:id="@+id/textViewTimeStamp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:layout_margin="1dp"
        android:gravity="center"
        android:layout_gravity="center"/>

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayoutOrder"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_margin="2dp"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_weight="1" >

    <TextView
    android:id="@+id/textViewOrder"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="15sp"
    android:textStyle="bold"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:layout_weight="1"
    android:gravity="center"
    android:layout_gravity="center" />

    <TextView
    android:id="@+id/textViewOrderDetails"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="12sp"
    android:layout_weight="1"
    android:layout_margin="0dp"
    android:gravity="center"
    android:layout_gravity="center" />

</LinearLayout>

<Button
    android:id="@+id/buttonDelete"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:text="@string/cross" 
    android:textSize="25sp"
    android:gravity="center"
    android:layout_gravity="center" />

</merge>

MainActivity.xml(snippet) - 插入表格行的位置。

<ScrollView 
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:scrollbars="vertical"
    android:layout_weight="1"
    android:layout_margin="10dp"
    android:overScrollMode="always" >

    <TableLayout
        android:id="@+id/tableLayoutMain"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp" >

    </TableLayout>

</ScrollView>

我真的无法弄清楚如何解决这个或可能导致它的原因......请帮忙!

提前谢谢! :)

注意:粉红色/红色矩形是android中开发者选项的“Show layout bonds”工具。

编辑:我用垂直LinearLayout替换了TableLayout,它工作得很好。我想我过度复杂了......:P

0 个答案:

没有答案