Как осуществить плиточное расположение картинок?

Добрый вечер. Нужно сделать галерею с изображениями разных размеров такого вида MniSNHEHJRE.jpg3eH0mH8kqx0.jpg как это можно реализовать?
  • Вопрос задан
  • 1037 просмотров
Пригласить эксперта
Ответы на вопрос 3
gadfi
@gadfi
https://gamega.org
recyclerview вам в помощь
Ответ написан
@itdroid
Привет, такую разметку можно сделать с помощью RecyclerView + GridLayoutManager.
Для GridLayoutManager установить кастомный GridLayoutManager.SpanSizeLookup и в нем определять столько ячеек будет занимать item. Например, так:
RecyclerView recyclerView = (RecyclerView) findViewById(android.R.id.recycler);
//грид в 3 колонки
GridLayoutManager gridLayoutManager= new GridLayoutManager(context, 3); 
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
    @Override
    public int getSpanSize(int position) {
        return position == 0 ? 3 : 1;
    }
});
recyclerView.setLayoutManager(gridLayoutManager);

Теперь первая картинка будет занимать все 3 колонки, а все последующие по одной.
С шириной картинок разобрались, осталось разобраться с высотой.
Можно сделать например так: что бы высота считалась динамически и зависила от ширины картинки, допустим высота = (ширина * 3)/4. Это можно сделать отнаследовавшись от ImageView и переопределив метод onMeasure.

Так как за ширину картинки будет отвечать GridLayoutManager, а высота будет динамически высчитываться, в результате мы получим что-то похожее на второй скриншот.
Написав более сложную логику в getSpanSize можно получить разметку как на первом скриншоте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы