Android设置android:gravity=center_horizontal后文本未按预期对齐问题
问题原因
android:gravity="center_horizontal"不生效是以下问题导致的:
- 概念理解偏差:
android:gravity的作用是控制控件内部内容相对于控件自身的对齐位置,生效前提是控件本身的尺寸大于内部内容的尺寸,给内容留出可移动的空间 - 尺寸设置错误:当前
TextView设置了android:layout_width="wrap_content",控件宽度会自动适配为和文本宽度完全一致,文本没有多余横向空间调整位置,属性自然不会生效 - 额外代码错误:布局闭合标签写为
</Linear Layout>(标签名中间多了空格),属于拼写错误,会直接导致布局编译失败,需要修正为</LinearLayout>
修复方案
按照实际需求二选一即可:
- 需求1:保持TextView宽度包裹内容,让控件本身在垂直LinearLayout中水平居中
删除原有android:gravity="center_horizontal"属性,给TextView添加android:layout_gravity="center_horizontal",该属性用于控制控件自身在父容器中的对齐规则。完整修正代码如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/name_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/press" android:textColor="@color/purple_200" android:textSize="30sp" /> </LinearLayout> - 需求2:让TextView宽度撑满父布局横向空间,文本在控件内部水平居中
保留原有android:gravity="center_horizontal"属性,将TextView的android:layout_width修改为match_parent即可。完整修正代码如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/name_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="@string/press" android:textColor="@color/purple_200" android:textSize="30sp" /> </LinearLayout>
相关截图
- 运行效果截图:

- 原问题代码截图:

内容的提问来源于stack exchange,提问作者liviu girlovanu
相关产品推荐
相关产品推荐

