#android #layout
#Android #макет
Вопрос:
Мне нужно сделать элемент с центром в ~ Linear layout, и есть второй угловой элемент, который в основном отсутствует.
Но центральный элемент может увеличиться, чтобы начать покрывать угловой элемент. Есть ли макет, который позволил бы мне убедиться, что они не перекрываются в такой ситуации?
Для иллюстрации:
------------------------------------------
|Center el| |corner el|
------------------------------------------
|Center el gets longer||corner el|
------------------------------------------
|Center el is respecting corner|corner el|
Редактировать:
Я экспериментировал с ConstraintLayout, но все ограничения либо «пружинистые» — активно отталкивают один компонент от другого, либо связаны цепочкой — прикрепляют один компонент к другому. Потребуется ограничение с коэффициентом пружины 0.
Возня с полями и смещением вроде работает, если известна ширина углового контейнера, но не дает точных результатов.
Комментарии:
1. Я бы сказал, что вы можете реализовать это с
ConstraintLayout
помощью барьеров и2. да, вы можете это сделать, constrinay layout позволяет вам делать это несколькими способами, взгляните на этот документ developer.android.com/training/constraint-layout
3. Обновил Q, я уже попробовал макет ограничения. Если у вас есть конкретное решение, это было бы здорово
Ответ №1:
вы можете использовать android: weightSum для решения вашей проблемы.
Тогда ваш LinearLayout должен быть примерно таким:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3">
<TextView
android:text="Center el is respecting corner"
android:layout_width="0dp"
android:gravity="center"
android:layout_weight="2"
android:layout_height="match_parent"/>
<TextView
android:text="corner el"
android:gravity="end"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"/>
</LinearLayout>
Я надеюсь, что это может вам помочь.
Комментарии:
1. К сожалению, не совсем так. В результате угловой элемент всегда занимает 33%, а центральный вид всегда отклоняется от родительского центра на 33%