@Hitreno
Копипастер со стажем

Как создать ряд кнопок, которые растягиваются по самой широкой?

Нужно сделать кнопки, которые растягиваются под самую широкую. Соответственно создал GridLayout для ряда кнопок, поставил и на ширину и на высоту wrap_content, а кнопкам match_parent чтобы растягивались, но кнопкам что wrap_content, что match_parent - без разницы. Как я понимаю Grid Layout должен растянуться под самую большую кнопку, а остальные заполнить оставшееся место, но этого почему-то не происходит.

Как хочу сделать
5f9a79a217c84506178485.png

Как получается
5f9a79c6e4976566519763.png

Структура кода
<ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    ...
    <GridLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="24dp">
            ...
    </GridLayout>
    ...
</ConstraintLayout>
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Что-то я не знаю простого способа это сделать. Вижу два пути - один гарантированный, второй нет.
Первый путь - наследуешься от LinearLayout, хардкодишь orientation = VERTICAL, переопределяешь onMeasure и в нём измеряешь детей в два прохода - первым спрашиваешь у них, какой они хотят быть ширины и ищешь максимум, второй - выставляешь им ширину exactly максимум. Это всё минимум кода, можно дважды вызвать super.onMeasure. В xml используешь эту кастомную вьюху в качестве контейнера, а всем детям ширину ставишь wrap_content. Если всё сделаешь правильно, получится в точности то, что ты хочешь.
Второй путь - попробовать поиграть с констреинтами в ConstraintLayout так что вьюхи друг на друга смотрели. К сожалению, не уверен, что это прокатит.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
29 нояб. 2020, в 12:58
40000 руб./за проект
29 нояб. 2020, в 12:11
30000 руб./за проект
29 нояб. 2020, в 11:17
4500 руб./за проект