Как сделать объекты с горизонтальной прокруткой в ​​вертикальном списке? - PullRequest
6 голосов
/ 31 января 2011

Я хотел бы использовать горизонтально прокручиваемые элементы в вертикально прокручиваемом ListView.

Мой наивный подход заключался в том, чтобы поместить содержимое элементов списка в scrollView. Элементы шире по горизонтали, чем вид прокрутки, но не выше, чем вид прокрутки. Поскольку просмотр списка - это обычный просмотр списка с вертикальной прокруткой, я подумал, что перетаскивание по вертикали будет прокручивать список, а при горизонтальном перетаскивании - прокрутка элементов.

Однако это не сработало. Список хорошо прокручивается по вертикали и показывает элементы правильно, но прокрутка по горизонтали не работает (ничего не происходит). К сожалению, я действительно не уверен, куда идти отсюда.

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

В качестве справки, я хотел бы, чтобы список вел себя так же, как в приложении «Пульс», если вы его видели.

Ответы [ 4 ]

6 голосов
/ 13 сентября 2013

Создайте обычный ListView с любым adapter, который вам нравится, но создайте макет элемента примерно так:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <HorizontalScrollView
        android:id="@+id/hor_scroll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/lin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/icon"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_marginRight="6.0dip"
                android:layout_alignParentTop="true"
                android:layout_alignParentBottom="true"
                android:focusable="false" />

            <TextView
                android:textAppearance="?android:textAppearanceMedium"
                android:gravity="center_vertical"
                android:id="@+id/text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:singleLine="true"
                android:layout_toRightOf="@id/icon"
                android:layout_alignParentTop="true"
                android:layout_alignParentBottom="true" />

        </LinearLayout>

    </HorizontalScrollView>


</RelativeLayout>

Вы будете иметь Вертикально Scrollable ListView с Горизонтально Scrollable предметов. И предметы прокручиваются независимо от других предметов.

3 голосов
/ 31 января 2011

Вам необходимо использовать HorizontalScrollView. Droidstack - приложение с открытым исходным кодом (я написал), которое делает именно это (в списках вопросов вы можете прокручивать теги для каждого вопроса), если вам нужен конкретный пример.

2 голосов
/ 31 января 2011

если вы следуете передовым методам разработки под Android, вам никогда не следует помещать ScrollView в ListView, не рекомендуется, например, Romain Guy и другим людям из разработки под Android, чтобы прочитать аргументы, прочитанные здесь: 1002 *

из документации для Android:

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

РЕДАКТИРОВАТЬ: кажется, что предупреждение, опубликованное выше, является ошибкой из документации Android, говоря с некоторыми коллегами, которые сказали мне, что это возможно. Проблема в документации здесь, http://code.google.com/p/android/issues/detail?id=2781.

мои извинения

0 голосов
/ 28 мая 2013

Вы можете использовать «ViewPager», каждый элемент в списке может быть ViewPager

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