Android Set Высота TableLayout - PullRequest
       6

Android Set Высота TableLayout

2 голосов
/ 14 апреля 2011

У меня есть TableLayout с одной строкой (т.е. строкой заголовка) в XML.Остальные все строки я добавляю динамически.XML PART:

    <TableLayout android:id="@+id/list_table" 
    android:layout_width="match_parent" android:layout_height="wrap_content" 
    android:stretchColumns="1" android:background="#808000" **android:scrollbars="vertical">**
    <TableRow android:layout_margin="1dp" android:layout_height="wrap_content" 
    android:layout_width="wrap_content" android:id="@+id/list_head_Row">
        <TextView android:layout_width="wrap_content"  
        android:text="Col1" android:layout_height="wrap_content"></TextView>
        <TextView android:gravity="center" android:layout_width="wrap_content" android:text="Col2" android:layout_height="wrap_content"></TextView>
        <TextView android:layout_width="wrap_content" android:text="Col3"  android:layout_height="wrap_content"></TextView>
    </TableRow>
</TableLayout>

В классе Activity я добавляю TableRows:

TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
// Add 3 TextViews
// Add Row to table
t1.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,             LayoutParams.WRAP_CONTENT));

При этом все строки добавляются в таблицу и заполняют экран.Я хочу установить это, просматривать только 4-5 строк, а другие можно прокручивать. Для этого я добавил:

    int tableHgt = t1.getChildAt(0).getHeight() + (rowHgt *40);
    t1.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, tableHgt));

При этом я вообще не вижу ни одной строки, кроме строки заголовка, добавленной в xml,Как я могу сделать его высоту, чтобы увидеть только 5 строк и все это можно прокручивать?В TableLayout android:scrollbars="vertical" также добавлено.

Где я иду не так?

Любая помощь высоко ценится.

Спасибо

1 Ответ

2 голосов
/ 14 апреля 2011

почему вы не используете ListView?

но хорошо ... вернуться к вашему вопросу поместите TableLayout в ScrollView и установите высоту в ScrollView

РЕДАКТИРОВАТЬ: код

activity.java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scrolltest);

    TableLayout t1 = (TableLayout) findViewById(R.id.list_table);

    for (int i = 0; i < 10; i++) {
        TableRow tr = new TableRow(this);
        tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
                TableRow.LayoutParams.WRAP_CONTENT));           
        t1.addView(tr, new TableLayout.LayoutParams(
                TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));  
        TextView tv = new TextView(this);
        tr.addView(tv, new TableRow.LayoutParams(
                TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        tv.setText(Integer.toString(i));
        tv = new TextView(this);
        tr.addView(tv, new TableRow.LayoutParams(
                TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        tv.setText("Row number");
        tv = new TextView(this);
        tr.addView(tv, new TableRow.LayoutParams(
                TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
        tv.setText(Integer.toString(i));        
    }
}

scrolltest.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="100dp"
    android:id="@+id/list_scroll">
    <TableLayout android:id="@+id/list_table"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:stretchColumns="1">
        <TableRow android:layout_margin="1dp" android:layout_height="wrap_content"
            android:layout_width="fill_parent" android:id="@+id/list_head_Row"
            android:background="#808000">
            <TextView android:layout_width="wrap_content" android:text="Col1"
                android:layout_height="wrap_content" />
            <TextView android:gravity="center" android:layout_width="wrap_content"
                android:text="Col2" android:layout_height="wrap_content" />
            <TextView android:layout_width="wrap_content" android:text="Col3"
                android:layout_height="wrap_content" />
        </TableRow>
    </TableLayout>
</ScrollView>
...