如何在布局中保持统一对齐
Posted
技术标签:
【中文标题】如何在布局中保持统一对齐【英文标题】:How to mantain uniform alignment in layout 【发布时间】:2020-12-24 19:31:42 【问题描述】:我正在尝试找到一种方法来保持文本视图在复杂布局中统一对齐。有没有办法将“1B”TextView
直接定位在“1A”TextView
下方和“1C”TextView
上方,同时避免过多嵌套?
注意:“1B”和“1C”TextViews
一起在 RelativeLayout
中,作为可扩展 RecyclerView
的一部分
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:background="@android:color/white">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:id="@+id/linearLayoutA">
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/relativeLayoutA">
<ImageView
android:layout_
android:layout_
android:id="@+id/ibA"
android:src="@mipmap/ic_launcher_round"/>
<TextView
android:layout_
android:layout_
android:id="@+id/tvA"
android:layout_toEndOf="@+id/ibA"/>
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/relativeLayoutB">
<TextView
android:layout_
android:layout_
android:id="@+id/tvB"/>
<ImageView
android:layout_
android:layout_
android:id="@+id/ivC"
android:src="@mipmap/ic_launcher_round"
android:layout_below="@id/tvB"/>
<TextView
android:layout_
android:layout_
android:id="@+id/tvC"
android:layout_below="@id/tvB"
android:layout_toEndOf="@id/ivC"/>
</RelativeLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
【问题讨论】:
【参考方案1】:使用约束布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:layout_
android:layout_>
<ImageView
android:id="@+id/imageView2"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/ic_launcher_round" />
<TextView
android:id="@+id/textView"
android:layout_
android:layout_
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="A 1"
app:layout_constraintStart_toEndOf="@+id/imageView2"
app:layout_constraintTop_toTopOf="@+id/imageView2" />
<TextView
android:id="@+id/textView2"
android:layout_
android:layout_
android:text="B1"
app:layout_constraintBottom_toTopOf="@+id/imageView4"
app:layout_constraintEnd_toEndOf="@+id/textView"
app:layout_constraintStart_toStartOf="@+id/textView"
app:layout_constraintTop_toBottomOf="@+id/imageView2" />
<TextView
android:id="@+id/textView3"
android:layout_
android:layout_
android:text="C 1"
app:layout_constraintEnd_toEndOf="@+id/textView2"
app:layout_constraintStart_toStartOf="@+id/textView2"
app:layout_constraintTop_toTopOf="@+id/imageView4" />
<ImageView
android:id="@+id/imageView4"
android:layout_
android:layout_
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
app:layout_constraintEnd_toEndOf="@+id/imageView2"
app:layout_constraintStart_toStartOf="@+id/imageView2"
app:layout_constraintTop_toBottomOf="@+id/imageView2"
app:srcCompat="@mipmap/ic_launcher_round" />
</android.support.constraint.ConstraintLayout>
【讨论】:
textView2
, textView3
& imageView4
需要在 Recyclerview 中展开和隐藏一些布局以上是关于如何在布局中保持统一对齐的主要内容,如果未能解决你的问题,请参考以下文章
如何使用大小类和自动布局在 Xib 中水平对齐两个 UI 按钮