Android: прокрутка списка данных вместе с другими компонентами - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь показать список данных в активности Android.Обычно любой мог бы сделать это с помощью простого ListView, который я использовал много раз раньше.Но теперь у меня есть приложение с фиксированным верхним и нижним колонтитулом, с прокруткой средней части (содержимого) под верхним и нижним колонтитулом.В средней части я хотел бы добавить другие компоненты выше и ниже списка данных, но часть whole должна быть прокручиваемой.Я попытался добавить компоненты (например, кнопку, текстовое представление и т. Д.) В просмотр списка, но компоновщик компоновки в Eclipse не позволил мне сделать это.

Поэтому я начал использовать ScrollView, где вы можете легко добавить любой компоненттебе нравится.Но мне не разрешено добавлять ListView в ScrollView, что я могу понять, так как это создаст странный эффект (так как оба могут прокручивать).

Далее я хотел использовать TableLayout для динамического добавления TableRows, но на нескольких веб-сайтах он называется медленным и «не способ сделать это».Я также не мог найти элегантный способ добавить разделитель между каждым элементом.С ListView это было бы очень легко сделать.

Следующее изображение, вероятно, в лучшем случае объясняет желаемый эффект: http://tinyurl.com/bvkec5d

Таблица с заголовком «Данные таблицы» может иметьмного предметов и, следовательно, может стать очень большой по длине.Что я не хочу , так это того, что таблица имеет фиксированный размер и элементы в этой таблице можно прокручивать.Я действительно хочу, чтобы таблица увеличивалась в размере, и поэтому ScrollView, содержащий таблицу, должен также расти.Я также хочу, чтобы инфобокс над таблицей прокручивался (как и любые другие компоненты, которые могут быть добавлены позже).

Как лучше всего добиться этого эффекта?

1 Ответ

0 голосов
/ 02 апреля 2012

Вы можете использовать простой вертикальный LinearLayout (или RelativeLayout), который содержит статический верхний и нижний колонтитулы, и использовать ListView между ними.Вы можете установить верхний и нижний колонтитулы в ListView, чтобы добавить прокручиваемый верхний и нижний колонтитулы.Для простоты примера вот способ LinearLayout:

 <LinearLayout android:orientation="vertical" 
               android:layout_height="match_parent"
               android:layout_width="match_parent">
      <!--static header content... can be any kind of view-->
      <TextView 
               android:layout_width="match_parent"
               android:layout_weight="0"
               android:layout_height="wrap_content"/>
      <ListView 
               android:id="@+id/list"
               android:layout_width="match_parent"
               android:layout_height="0dp"
               android:layout_weight="1"/>

      <!--static footer content... can be any kind of view-->
      <TextView 
               android:layout_width="match_parent"
               android:layout_weight="0"
               android:layout_height="wrap_content"/>
 </LinearLayout>

А в коде вы можете сказать:

ListView theList = (ListView)findViewById(R.id.list);

// example of creating header and footer views from inflation or by instantiation in code
View myHeaderView = getLayoutInflater().inflate(R.layout.myHeaderLayout,theList,false);
View myFooterView = new TextView(this, some layout params);

theList.addHeaderView(myHeaderView); 
theList.addFooterView(myFooterView); 

ListView.addHeaderView и ListView.addFooterView должен включитьдобавить другие статические представления (содержимое которых можно динамически обновлять) в верхнюю или нижнюю часть ListView:

public void addHeaderView (View v)

С тех пор: Уровень API 1 Добавьте фиксированное представление для отображения в верхней частисписок.Если addHeaderView вызывается более одного раза, представления будут отображаться в порядке их добавления.Представления, добавленные с помощью этого вызова, могут получить фокус, если они хотят.

ПРИМЕЧАНИЕ. Вызовите это перед вызовом setAdapter.Это так, что ListView может обернуть предоставленный курсор курсором, который также будет учитывать представления верхнего и нижнего колонтитула.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...