android - ConstraintLayout:如何将两个 TextView 垂直居中对齐
问题描述
XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
android:id="@+id/card_view"
style="@style/Widget.MaterialComponents.CardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/mtrl_card_spacing"
android:layout_marginTop="@dimen/mtrl_card_spacing"
android:layout_marginRight="@dimen/mtrl_card_spacing"
android:layout_marginBottom="@dimen/mtrl_card_spacing"
app:cardCornerRadius="4dp"
app:cardElevation="2dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="84dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/iv_logo_home_team"
android:layout_width="@dimen/match_item_team_logo"
android:layout_height="@dimen/match_item_team_logo"
android:layout_marginStart="@dimen/unit_dp_10"
android:layout_marginLeft="@dimen/unit_dp_10"
android:layout_marginEnd="@dimen/unit_dp_10"
android:layout_marginRight="@dimen/unit_dp_10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@drawable/ic_launcher_background" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_player_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/unit_sp_12"
android:gravity="center"
android:textAlignment="center"
android:textSize="@dimen/unit_sp_10"
app:fontFamily="@font/avenir_next_bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@+id/iv_logo_home_team"
app:layout_constraintTop_toTopOf="parent"
tools:text="@tools:sample/lorem" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_player_role"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/unit_sp_12"
android:layout_marginLeft="@dimen/unit_sp_12"
android:gravity="center"
android:textAlignment="center"
android:textSize="@dimen/unit_sp_10"
app:fontFamily="@font/avenir_next_bold"
app:layout_constraintLeft_toRightOf="@+id/iv_logo_home_team"
app:layout_constraintTop_toBottomOf="@id/tv_player_name"
tools:text="@tools:sample/lorem" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
设计视图:
解决方案
tv_player_name
从上到下约束,从下到下iv_logo_home_team
约束,设置垂直链样式为。还要垂直约束和(创建一个链)。换句话说:tv_player_role
iv_logo_home_team
packed
tv_player_name
tv_player_role
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_player_name"
...
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintLeft_toRightOf="@+id/iv_logo_home_team"
app:layout_constraintTop_toTopOf="@+id/iv_logo_home_team"
app:layout_constraintBottom_toTopOf="@+id/tv_player_role" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_player_role"
...
app:layout_constraintLeft_toRightOf="@+id/iv_logo_home_team"
app:layout_constraintTop_toBottomOf="@id/tv_player_name"
app:layout_constraintBottom_toBottomOf="@+id/iv_logo_home_team" />
推荐阅读
- html - 隐藏被溢出部分或完全隐藏的元素
- r - R:如何按他们的组对箱线图上的样本进行着色?
- android - libgdx 内存分配在动画上失败
- akka - Unable to resolve akka.pattern.AskTimeoutException: Ask timed out
- linux - 内核如何管理虚拟内存
- css - Django FilteredSelectMultiple 右半部分不渲染
- python - 有什么方法可以在 PIL 中指定颜色(用于绘制多边形)而不会出错?
- android - Kotlin 中的 URI 解析不起作用
- opencl - 在主机和内核中同时使用 OpenCL 缓冲区
- ruby-on-rails - application.rb 语法错误,意外 ',',期待 ')'