Что-то я не знаю простого способа это сделать. Вижу два пути - один гарантированный, второй нет.
Первый путь - наследуешься от LinearLayout, хардкодишь orientation = VERTICAL, переопределяешь onMeasure и в нём измеряешь детей в два прохода - первым спрашиваешь у них, какой они хотят быть ширины и ищешь максимум, второй - выставляешь им ширину exactly максимум. Это всё минимум кода, можно дважды вызвать super.onMeasure. В xml используешь эту кастомную вьюху в качестве контейнера, а всем детям ширину ставишь wrap_content. Если всё сделаешь правильно, получится в точности то, что ты хочешь.
Второй путь - попробовать поиграть с констреинтами в ConstraintLayout так что вьюхи друг на друга смотрели. К сожалению, не уверен, что это прокатит.