Список изображений с двумя столбцами Android - PullRequest
2 голосов
/ 08 февраля 2012

Может кто-нибудь помочь мне создать макет Android, как на картинке ниже. Он имеет две колонки для хранения изображений. Каждое изображение имеет одинаковую ширину.

Большое спасибо,

Screen

Ответы [ 4 ]

3 голосов
/ 08 февраля 2012

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

Хотя это своего рода обман.Лучшим способом было бы создать пользовательский макет, полученный из RelativeLayout, который может хранить идентификаторы последнего и второго к последнему представлений, добавленные в него.Когда добавится следующий, поместите его в layout_below = "@ id / second_to_last", тогда вновь добавленный вид станет последним, предыдущий последним - со второго на последний, и в следующий раз вы будете добавлять вид под ним.(Да, я знаю, не совсем то, что вы бы назвали четким описанием :), но не стесняйтесь задавать дополнительные вопросы)

1 голос
/ 08 ноября 2014

посмотрите на интерес, как загрузчик галереи изображений: https://github.com/etsy/AndroidStaggeredGrid

1 голос
/ 08 февраля 2012

Быстрый совет - не забывайте добавлять «android: AdjustViewBounds =« true »» в ваш файл xml-layout для изображений. Без этого изображения имеют большие поля сверху и снизу.

Просто совет, может быть, у вас есть проблемы с этим. Также помните о функциях масштабирования в Android

0 голосов
/ 08 февраля 2012

Вы можете создать ScrollView, который содержит два столбца (один вертикальный LinearLayout для каждого столбца). Чтобы заполнить его, вы просто создаете объект ImageView для каждого изображения и добавляете его в список, вызывая linearLayout1.addView (myImageView). Пожалуйста, обратите внимание, что вы можете столкнуться с проблемами памяти, если вы добавите много изображений ...

Ваш файл макета будет выглядеть примерно так:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

         <!-- Left column -->
         <LinearLayout
             android:id="@+id/linearLayout1"
            android:layout_width="160dp"
            android:layout_height="fill_parent"
            android:orientation="verical" />

         <!-- Right column -->
         <LinearLayout
             android:id="@+id/linearLayout2"
            android:layout_width="160dp"
            android:layout_height="fill_parent"
            android:orientation="verical" />
    </LinearLayout>
</ScrollView>
...