Прокрутка через tabellayout не работает в Android

Я пытаюсь сделать мою таблицу, которая вложена в прокрутку относительного представления. Пробовал пару уроков, но ничего не получалось. Вот XML и мой код Java:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/white" android:padding="10px"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/textView1"
    android:paddingBottom="10dp" android:text="Mijn Rooster"
    android:textSize="20sp" android:layout_alignParentTop="true"
    android:layout_alignLeft="@+id/tablelayout"></TextView>
<ScrollView android:id="@+id/ScrollView01"
    android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TableLayout android:id="@+id/tablelayout"
        android:layout_width=
"fill_parent" android:layout_height="wrap_content"
        android:stretchColumns="0" android:layout_below="@+id/textView1"
        android:layout_above="@+id/btnsearch">

    </TableLayout>
</ScrollView>

<Button android:id="@+id/btnsearch" android:layout_width="wrap_content"
    android:text="Zoek op Datum" android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"></Button>
</RelativeLayout>

А вот код JAVA:

TableLayout tl = (TableLayout) findViewById(R.id.tablelayout);

    if (date_selected == null) {
        for (int i = 0; i < roostermap.size(); i++) {

            TableRow trdaydatetime = new TableRow(this);
            TableRow trinfo = new TableRow(this);

            trdaydatetime.setLayoutParams(new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

            TableRow.LayoutParams rowSpanLayout = new TableRow.LayoutParams(
                    TableRow.LayoutParams.FILL_PARENT,
                    TableRow.LayoutParams.WRAP_CONTENT);
            rowSpanLayout.span = 3;

            TextView txtDay = new TextView(this);
            TextView txtTime = new TextView(this);
            TextView txtResult = new TextView(this);

            // Set Text
            txtDay.setText(roostermap.get(i).getDay(
                    roostermap.get(i).getRoster_date().getDay(),
                    roostermap.get(i).getRoster_date())
                    + " " + df.format(roostermap.get(i).getRoster_date()));
            txtTime.setText(dft.format(roostermap.get(i).getRoster_start())
                    + " - " + dft.format(roostermap.get(i).getRoster_end()));
            txtResult.setText(roostermap.get(i).getWorkplace_name());

            // Day&Date Layout
            txtDay.setLayoutParams(new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            txtDay.setPadding(5, 5, 0, 0);
            txtDay.setTextColor(Color.BLACK);

            // Text Time layout
            txtTime.setLayoutParams(new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            txtTime.setTextColor(Color.BLACK);
            txtTime.setPadding(0, 5, 10, 0);
            txtTime.setGravity(Gravity.RIGHT);

            // Text Result layout
            txtResult.setLayoutParams(new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            txtResult.setPadding(5, 0, 0, 5);

            trdaydatetime.addView(txtDay);
            trdaydatetime.setBackgroundResource(R.drawable.trup);
            trdaydatetime.addView(txtTime);
            trinfo.addView(txtResult, rowSpanLayout);
            trinfo.setBackgroundResource(R.drawable.trdown);

            tl.addView(trdaydatetime, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            tl.addView(trinfo, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        }

2 ответа

Решение

Чтобы "прокрутка" работала, вам нужно содержание ScrollView быть больше чем ScrollView сам. Так как вы установили android:layout_height значение для wrap_contentВысота ScrollView соответствует высоте его содержимого - что означает отсутствие прокрутки.

Исправить android:layout_height значение ScrollView либо установив его на fill_parent (возможно с android:layout_weight) или значение пикселя.

Устранить ScrollView. Вы не можете объединить два вида, которые можно прокручивать, особенно если прокрутить в одном направлении.

Сам TableView обрабатывает прокрутку, если содержимое больше, чем высота TableView.

Другие вопросы по тегам