Привет, такую разметку можно сделать с помощью 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 можно получить разметку как на первом скриншоте.