Android Studio中ConstraintLayout内TextView文本无法居中问题
TextView文本偏移无法居中的原因及解决办法
问题原因
你的TextView文本看起来偏移,核心问题是TextView本身的尺寸和背景shape的尺寸不匹配:
- TextView设置了
layout_width="match_parent"和layout_height="match_parent",实际大小继承自父ConstraintLayout的48dp×48dp。 - 背景shape里的
<size android:height="24dp" android:width="24dp"/>仅定义了shape的默认绘制尺寸,不会改变TextView的实际大小。 textAlignment="center"是让文本在48dp的TextView范围内居中,但背景只在TextView左上角显示24dp的区域,视觉上就造成了文本相对于背景偏移的效果。
解决方案
方案1:调整TextView尺寸匹配背景大小,并约束到目标位置
将TextView的宽高改为24dp,同时用ConstraintLayout把它约束到你想要的位置(比如按钮右上角),这样文本会在24dp的TextView内居中,和背景完全对齐:
<TextView android:id="@+id/tvNrOfCurrentlySelectedItemsCounter" android:layout_width="24dp" android:layout_height="24dp" android:background="@drawable/layout_plants_selection_counter_rect" android:textColor="@color/md_theme_dark_primary" android:textStyle="bold" android:textSize="12sp" android:alpha="0.6" android:textAlignment="center" android:visibility="visible" android:text="99" app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" />
方案2:移除shape中的固定尺寸,让背景填充TextView
如果希望背景铺满整个48dp的TextView,直接删除shape里的<size>节点,背景会随TextView大小自适应,文本居中后就会和背景对齐:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/md_theme_light_onSecondaryContainer" /> <corners android:radius="8dp"/> </shape>
方案3:改用gravity属性(兼容低版本)
部分低版本Android系统中textAlignment可能存在兼容性问题,可以替换为android:gravity="center",同样能实现文本居中效果,配合上述两种尺寸调整方案使用即可:
<TextView ... android:gravity="center" ... />
内容的提问来源于stack exchange,提问作者KernelPanic
相关产品推荐
相关产品推荐

