Макеты Android: центрируйте вид, но соблюдайте угловой вид

#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%