展开TextView,TableRow和TableView的宽度

时间:2013-12-20 18:49:01

标签: android dynamic tableview

我正在尝试根据服务器上文本文件的内容动态地将表格,行,图像和文本视图添加到视图中。一切顺利,除了文本只填满了一半页面。

这是我的代码:

private void setMainView(String section, String selection){
    mTableView = (TableLayout) findViewById(R.id.tableLayout1);
    mTableView.removeAllViews();
    ArrayList<String> info = getInfoArray(section, selection);
    String[] instructions = info.get(0).split("\\|"); 
    String[] values = info.get(1).split("\\|");
    for(int i=1; i < instructions.length; i++){
        if (instructions[i].equals("@image")){
            TableRow newRow = new TableRow(this);

            ImageView newImage = new ImageView(this);
            LayoutParams params = (LayoutParams) newImage.getLayoutParams();
            params.width = 120;
            params.height = 120;
            // existing height is ok as is, no need to edit it
            newImage.setLayoutParams(params);
            newRow.addView(newImage);
             mTableView.addView(newRow);
        }else{
            TableRow newRow = new TableRow(this);
            TextView newText = new TextView(this);
            newText.setText(instructions[i] + ": " + values[i]);
            newText.setTextColor(Color.WHITE);

            newRow.addView(newText);
            mTableView.addView(newRow);
        }

    }
    TableRow newRow = new TableRow(this);
    newRow.setLayoutParams(new TableLayout.LayoutParams(
            TableLayout.LayoutParams.MATCH_PARENT,
            TableLayout.LayoutParams.MATCH_PARENT, 1.0f));
    TextView newText = new TextView(this); 
    newText.setText(info.get(2));
    newText.setTextColor(Color.WHITE);
    newText.setSingleLine(false);

    newText.setWidth(LayoutParams.MATCH_PARENT);

    newText.setMaxLines(100);
    newRow.addView(newText);
    mTableView.setPadding(70, 20, 70, 0);
    mTableView.addView(newRow);
}

这是我的xml:

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" /> 

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

</TableLayout>
<ListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

这就是我得到的:

From the simulator

我想要它做的是填充屏幕几乎以拉丁填充文本结束,而不是只填充屏幕的一半。我哪里出错了?

2 个答案:

答案 0 :(得分:1)

这是你的错误:

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />   <------------ HERE!!!!!

您希望以下textview成为FrameLayout的INSIDE!像这样:

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" > 
    <TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</FrameLayout>

试试这个:

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:id="@+id/scroll_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" />
    </ScrollView>
</FrameLayout>

您将TextViews添加到scroll_layout。

答案 1 :(得分:0)

你可以试试这个......

 TableLayout.LayoutParams.MATCH_PARENT,
            TableLayout.LayoutParams.WRAP_CONTENT