как прокрутить просмотр таблицы в андроиде - PullRequest
5 голосов
/ 22 марта 2011

У меня есть таблица, которую я хочу прокрутить, потому что данные не отображаются полностью.

 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:stretchColumns="0,1,2,3,4"
            android:id="@+id/maintable" >
</TableLayout>

это моя таблица, и если я оберну ее в <ScrollView> </Scrollview>, приложение вылетит, если я открою действие. Как это сделать?

Ответы [ 2 ]

12 голосов
/ 22 марта 2011

Вы действительно должны поместить код, который вы пробовали, который разбил ваше приложение, и причину вашего сбоя.В вашем исходном сообщении нет никакой ценной информации.

Эххх ... Вы пробовали что-то простое, как это?Пример .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="fill_parent">
    <TableLayout android:id="@+id/score_table"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"> 
        <TableRow android:id="@+id/header"/>                    
    </TableLayout>
</ScrollView>

Работает абсолютно нормально для меня.Вам не обязательно включать TableRow, если вы не используете его, очевидно.

2 голосов
/ 22 марта 2011

Создайте свои строки динамически Здесь я приведу небольшой пример,

main.xml

<Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add row"></Button>

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

  <TableLayout android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="0">

    <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">
      <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="textfield 1-1"></TextView>

      <CheckBox android:id="@+id/CheckBox01" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
    </TableRow>

  </TableLayout>
</ScrollView>

Активность

public class tablelayout extends Activity implements OnClickListener {
    /** Called when the activity is first created. */

    //initialize a button and a counter
    Button btn;
    int counter = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // setup the layout
        setContentView(R.layout.main);

        // add a click-listener on the button
        btn = (Button) findViewById(R.id.Button01);
        btn.setOnClickListener(this);        

    }

    // run when the button is clicked
    public void onClick(View view) {

        // get a reference for the TableLayout
        TableLayout table = (TableLayout) findViewById(R.id.TableLayout01);

        // create a new TableRow
        TableRow row = new TableRow(this);

        // count the counter up by one
        counter++;

        // create a new TextView
        TextView t = new TextView(this);
        // set the text to "text xx"
        t.setText("text " + counter);

        // create a CheckBox
        CheckBox c = new CheckBox(this);

        // add the TextView and the CheckBox to the new TableRow
        row.addView(t);
        row.addView(c);

        // add the TableRow to the TableLayout
        table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    }
}

Вы можете создать строку таблицы, когда в вашем коде требуется. Я предположил, что это при нажатии кнопки.

Надеюсь, это поможет.

А вот еще один пример .

...