首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在安卓中调整动态TableLayout的大小

在安卓中调整动态TableLayout的大小
EN

Stack Overflow用户
提问于 2017-08-15 15:56:33
回答 1查看 71关注 0票数 0

我已经在Android中创建了一个动态TableLayout。问题是,列中有一个不必要的间隙。我想删除它,我已经修改了几次代码,但结果令人惊讶。这是我目前所能得到的最好的。

TableLayout Image

正如您所看到的,标题中有一个间隙,如果行包含2+行,则行中也有一个间隙。我想让第一列(即Items)具有最长的宽度,而另一列只包含标题的内容。

这是XML

代码语言:javascript
运行
复制
<TableLayout
                    android:id="@+id/tableDescription"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:stretchColumns="*">

                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:weightSum="4">

                        <TextView
                            android:layout_width="@dimen/size0"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:background="@drawable/cell_shape"
                            android:padding="@dimen/size5"
                            android:text="@string/items" />

                        <TextView
                            android:layout_width="@dimen/size0"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:background="@drawable/cell_shape"
                            android:padding="@dimen/size5"
                            android:text="@string/quantity" />

                        <TextView
                            android:layout_width="@dimen/size0"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:background="@drawable/cell_shape"
                            android:padding="@dimen/size5"
                            android:text="@string/unitPrice" />

                        <TextView
                            android:layout_width="@dimen/size0"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:background="@drawable/cell_shape"
                            android:padding="@dimen/size5"
                            android:text="@string/total" />
                    </TableRow>

                </TableLayout>

下面是生成动态行的代码

代码语言:javascript
运行
复制
private void init() {

    // Array for item
    String[] valuesItem = new String[] {
            "Room asd",
            "Room qwewq",
            "Room kadskadskl",
            "Room oeqwoeqwo",
            "Room uuawuwauaw" };

    final ArrayList<String> listItem = new ArrayList<String>();
    for (int i = 0; i < valuesItem.length; ++i) {
        listItem.add(valuesItem[i]);
    }

    // Array for quantity
    String[] valuesQuantity = new String[] {
            "1",
            "1",
            "2",
            "1",
            "2" };

    final ArrayList<String> listQuantity = new ArrayList<String>();
    for (int i = 0; i < valuesQuantity.length; ++i) {
        listQuantity.add(valuesQuantity[i]);
    }

    // Array for price
    String[] valuesPrice = new String[] {
            "10",
            "10",
            "20",
            "50",
            "30" };

    final ArrayList<String> listPrice = new ArrayList<String>();
    for (int i = 0; i < valuesPrice.length; ++i) {
        listPrice.add(valuesPrice[i]);
    }

    // Array for total
    String[] valuesTotal = new String[] {
            "10",
            "10",
            "40",
            "50",
            "60" };

    final ArrayList<String> listTotal = new ArrayList<String>();
    for (int i = 0; i < valuesTotal.length; ++i) {
        listTotal.add(valuesTotal[i]);
    }

    for (int i = 0; i <valuesItem.length; i++) {

        TableRow row= new TableRow(getActivity());
        TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT);
        row.setLayoutParams(lp);
        TextView item = new TextView(getActivity());
        TextView quantity = new TextView(getActivity());
        TextView price = new TextView(getActivity());
        TextView total = new TextView(getActivity());
        item.setText(valuesItem[i]);
        quantity.setText(valuesQuantity[i]);
        price.setText(valuesPrice[i]);
        total.setText(valuesTotal[i]);
        item.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                (getActivity().getResources().getDimensionPixelSize(R.dimen.size5)),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
        quantity.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
        price.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
        total.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5),
                getActivity().getResources().getDimensionPixelSize(R.dimen.size5));
        item.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
        quantity.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
        price.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
        total.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0));
        item.setBackgroundResource(R.drawable.cell_shape);
        quantity.setBackgroundResource(R.drawable.cell_shape);
        price.setBackgroundResource(R.drawable.cell_shape);
        total.setBackgroundResource(R.drawable.cell_shape);
        row.addView(item);
        row.addView(quantity);
        row.addView(price);
        row.addView(total);
        tableDynamic.addView(row);
    }

}

抱歉,如果有点乱的话。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-17 11:56:36

通过为每个TextView配置LayoutParams来解决

代码语言:javascript
运行
复制
lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 5f);
        item.setLayoutParams(lp);
        lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 2f);
        quantity.setLayoutParams(lp);
        lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 1.5f);
        price.setLayoutParams(lp);
        lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 1.5f);
        total.setLayoutParams(lp);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45688653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档