簡體   English   中英

Android為表格數據創建布局的規范方法是什么?

[英]Android what is the canonical way of creating a layout for tabular data?

我正在嘗試為表格設計一個布局,如下所示:

在此處輸入圖片說明

列是固定的,行可以動態添加/刪除。

因此,我嘗試使用TableLayout設計表的“骨架”。

<ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TableLayout
                android:id="@+id/tblSales"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:padding="10dp"
                android:shrinkColumns="*"
                android:stretchColumns="*">
            <TableRow
                android:id="@+id/tblSalesCol"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TextView
                    android:text="Inventory Info"
                    android:textSize="20sp"
                    android:layout_width="120dp"
                    />
                <TextView
                    android:text="Sold Price"
                    android:textSize="20sp"
                    android:layout_width="40dp"
                    />
                <TextView
                    android:text="Sold Qty"
                    android:textSize="20sp"
                    android:layout_width="5dp"
                    />

            </TableRow>
            <View style="@style/Divider"/>

            </TableLayout>
        </ScrollView>

並嘗試為動態添加的行設計自定義表格行布局

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp">
            <TextView
                android:id="@+id/tblrowSales_inv_name"
                android:textStyle="bold"
                android:textSize="15sp"
                android:textColor="#000000"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_height="30dp"
                android:layout_width="200dp"/>
            <TextView
                android:id="@+id/tblrowSales_detail"
                android:textStyle="bold"
                android:textColor="#000000"
                android:layout_height="20dp"
                android:layout_width="200dp"
                android:layout_below="@id/tblrowSales_inv_name"
                />
            <TextView
                android:id="@+id/tblrowSales_sold_price"
                android:textStyle="normal"
                android:textColor="#000000"
                android:layout_height="50dp"
                android:layout_width="100dp"
                android:layout_toRightOf="@id/tblrowSales_detail"/>
            <TextView
                android:id="@+id/tblrowSales_sold_qty"
                android:textStyle="normal"
                android:textColor="#000000"
                android:layout_height="50dp"
                android:layout_width="50dp"
                android:layout_toRightOf="@id/tblrowSales_sold_price"/>
    </RelativeLayout>
</TableRow>

而且主要的問題是,使用relativelayout時,無法按比例設置字段的寬度(因為layout_weight僅在linearlayout上受支持)。

我也認為行的字段寬度不會與TableLayout中定義的列寬度同步。

總而言之,這種方法感覺很臟而且非常錯誤。

創建示例中顯示的表格的正確方法是什么?

根據需要創建表的簡單方法是使用GridLayout 以這種方式,列寬適合於內容,並且標題和行具有相同的列寬。

例如:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <GridLayout
        android:id="@+id/tblSales"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:columnCount="3"
        android:padding="10dp" >

        <TextView
            android:text="Inventory Info"
            android:textSize="20sp" />

        <TextView
            android:text="Sold Price"
            android:textSize="20sp" />

        <TextView
            android:text="Sold Qty"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/tblrowSales_inv_name"
            android:layout_width="200dp"
            android:layout_height="30dp"
            android:text="BackPAck"
            android:textColor="#000000"
            android:textSize="15sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tblrowSales_sold_price"
            android:layout_gravity="center"
            android:layout_rowSpan="2"
            android:text="33.50$"
            android:textColor="#000000"
            android:textStyle="normal" />

        <TextView
            android:id="@+id/tblrowSales_sold_qty"
            android:layout_gravity="center"
            android:layout_rowSpan="2"
            android:text="1"
            android:textColor="#000000"
            android:textStyle="normal" />

        <TextView
            android:id="@+id/tblrowSales_detail"
            android:layout_width="200dp"
            android:layout_height="20dp"
            android:text="Sales Regular"
            android:textColor="#000000"
            android:textStyle="bold" />
    </GridLayout>

</ScrollView>

您是否嘗試過以編程方式添加行,而不是加載xml? 這只是一個主意,但是您可以在xml中創建標題,然后在onCreate中添加具有所需LayoutParams的TextView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM