0

在我的 xml 文件中查看一些视图后,我有一个表格布局。下面是代码。

<ScrollView>
   <LinearLayout>

..................................
.....................................
<Button
         android:id="@+id/fetchbutton"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="show details"
         android:layout_margin="6dip"
         android:layout_gravity="center_horizontal"
         android:onClick="buttonOnClick"/>

         <TableLayout
            android:id="@+id/mytable_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:orientation="vertical"
             >
        </TableLayout>

    </LinearLayout>
</ScrollView>

以下是以编程方式为表格布局添加行的代码:

public void buttonOnClick(View view)
    {
        showData();
    }
    public void showData()
    {

        List<DataSource> data = dbHelper.getData(selectedoption);
        TableLayout tl = (TableLayout)findViewById(R.id.mytable_layout);

        for(DataClass dataclass:data)
        {
            TableRow tr = new TableRow(ViewScreen.this);

            TableRow.LayoutParams params = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);

            tr.setLayoutParams(params);   

            TextView labelTV = new TextView(ViewScreen.this);
            labelTV.setText(dataclass.getColumnName());
            labelTV.setTextColor(Color.RED);
            TableRow.LayoutParams paramsTV1 = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
            labelTV.setLayoutParams(paramsTV1);
            tr.addView(labelTV);

            // Creating a TextView to house the value of the after-tax income
            TextView valueTV = new TextView(ViewScreen.this);
            valueTV.setText(dataclass.getColumnValue());
            valueTV.setTextColor(Color.BLACK);
            TableRow.LayoutParams paramsTV2 = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
            valueTV.setLayoutParams(paramsTV2);
            tr.addView(valueTV);

            // Adding the TableRow to the TableLayout
            tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));


        }

    }

所以按照上面的代码,它工作正常。但是表格行总是一行。table row height不是根据increased内容。取而代之的是文本的一部分离开屏幕并且不可见。有人可以帮忙解决这个问题吗?

图片:

在此处输入图像描述

4

4 回答 4

0

尝试使您的 Textview 多行。

在您的代码中添加以下行以使 textview 多行。

yourtextview.setSingleLine(false);

希望这可以帮助

于 2013-04-29T11:27:09.230 回答
0

你可以设置tablelayout的shrinkable属性来得到你想要的效果。来自 Android 开发者网站的文档:

列的宽度由该列中单元格最宽的行定义。但是,TableLayout 可以通过调用 setColumnShrinkable() 或 setColumnStretchable() 将某些列指定为可收缩或可拉伸。如果标记为可收缩,则可以收缩列宽以使表格适合其父对象。如果标记为可拉伸,它可以扩展宽度以适应任何额外的空间。表格的总宽度由其父容器定义。重要的是要记住,一列既可以收缩也可以拉伸。在这种情况下,列将更改其大小以始终用完可用空间,但永远不会更多。最后,您可以通过调用 setColumnCollapsed() 来隐藏一列。

例子 :

<TableLayout
    android:id="@+id/fragment_print_job_detail_info_group"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:shrinkColumns="1"
    android:layout_margin="@dimen/image_button_margin"
    android:background="@drawable/round_corner_white_background_shape" >
于 2014-01-27T15:25:51.860 回答
0

将以下内容设置为您的表格布局:-

tablename.setColumnShrinkable(ColumnIndex, true); 
于 2013-04-30T10:10:01.490 回答
0

创建一个自定义的 single_row.xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayoutSingleRowRecordsDetailedView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff" >

    <TextView
        android:id="@+id/textViewSingleRowRecordsDetailedViewCategoryField"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="10dp"
        android:text="TextView"
        android:textColor="#04B4AE"
        android:textSize="15dp"
        android:typeface="sans" />

    <TextView
        android:id="@+id/textViewSingleRowRecordsDetailedViewCategoryFieldValue"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="10dp"
        android:text="TextView"
        android:textColor="#000000"
        android:textSize="15dp"
        android:typeface="sans" />

</RelativeLayout>

然后在我的java代码中:

...
LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                final View view = inflate.inflate(R.layout.single_row_records_detailed_view, null);

                TextView tv_field_name = (TextView) view.findViewById(R.id.textViewSingleRowRecordsDetailedViewCategoryField);
                TextView tv_field_value = (TextView) view.findViewById(R.id.textViewSingleRowRecordsDetailedViewCategoryFieldValue);

                if(al_field_value.get(i).equals(""))
                {
                    null_count = null_count + 1;
                    continue;
                }
                else
                {
                    tv_field_name.setText(get_field_name(al_cat_field_id.get(i)));
                    tv_field_value.setText(al_field_value.get(i));
                }

                linearLayout_details.addView(view);
...
于 2013-04-29T10:47:45.933 回答