Является ли производительность представления с глубокой иерархией (2 или более) лучше, чем производительность ограниченного макета, если избежать двойного налогообложения? Как мы можем это измерить? Есть ли порог, когда нам нужно будет избегать более глубокой иерархии? Вот двойное налогообложение при использовании RelativeLayout на Android вопрос о двойном налогообложении
Я также привел простой пример ниже, не могли бы вы сказать, какой макет работает лучше?
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_close_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:padding="8dp"
android:text="1 component" />
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="2 component"/>
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_desc_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="3 component"/>
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="4 component" />
</LinearLayout>
</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".ConstraintActivity">
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_close_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginBottom="8dp"
android:padding="8dp"
android:text="1 component"
app:layout_constraintBottom_toTopOf="@+id/allow_notifications_title_text"
app:layout_constraintEnd_toEndOf="parent" />
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:gravity="center"
android:text="2 component"
app:layout_constraintBottom_toTopOf="@+id/allow_notifications_desc_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_desc_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:gravity="center"
android:text="3 component"
app:layout_constraintBottom_toTopOf="@+id/allow_notifications_btn"
app:layout_constraintEnd_toEndOf="@+id/allow_notifications_title_text"
app:layout_constraintStart_toStartOf="@+id/allow_notifications_title_text" />
<com.example.measurelayout.CustomTextView
android:id="@+id/allow_notifications_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="4 component"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>