2014-01-14 5 views
0

Итак, у меня есть TableLayout, который я хочу поместить в ScrollView. Но у меня есть проблема:Помещение TableLayout внутри ScrollView?

The TableLayout изначально пуст, и я программно добавляю к нему TableRows, нажимая кнопку. Это отлично работает, если я положил TableLayout в ScrollView нормально.

Но я хочу поставить TableLayout на НИЖНЕЙ ЧАСТИ ScrollView. Поэтому каждый раз, когда я добавляю TableRow, последняя ячейка всегда будет выровнена в нижней части родительского ScrollView. (вроде того, как работают чат-приложения - когда вы нажимаете send, ваше сообщение добавляется снизу, а все остальные сообщения выдвинуты вверх).

Что происходит, если я использую android:layout_gravity="bottom", чтобы попытаться достичь этого, я не могу видеть ни одну из строк, которые выталкиваются вверх из вида экрана (я не могу прокручивать вверх). Тем не менее, я могу прокрутить вниз по какой-то причине в пустоту, что не должно быть возможным, так как последний TableRow должен быть внизу.

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

Это соответствующий код XML:

<ScrollView 
    android:id="@+id/tableScrollView" 
    android:layout_width="match_parent" 
    android:layout_weight="0.7" 
    android:layout_height="0dip" 
    android:scrollbars="none" 
    android:orientation="vertical" 
    android:background="@drawable/stripes_background" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_gravity="bottom">  

     <TableLayout 
      android:id="@+id/outputTable" 
      android:layout_alignParentBottom="true" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:divider="@drawable/table_divider" 
      android:showDividers="middle">  
    </TableLayout> 
    </RelativeLayout> 

</ScrollView> 

ответ

4

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

EDIT Заполните вопрос Listview Scroll to the end of the list after updating the list, чтобы получить подробную информацию о выполнении операции прокрутки, требуемой с помощью ListView.

+0

О, я понял, что ListView существует только после того, как я написал все это для TableView ... Я просто немного ленив, чтобы изменить все это, но сейчас буду читать. – ujvl

+0

Скорее всего, вы найдете подходящий рефакторинг. – hunt

Смежные вопросы