Android TextView设置gravity=center文本被截断的解决方法咨询
嘿,我来帮你搞定这个文字显示截断的问题~ 看了你的布局代码,问题主要出在父LinearLayout的固定宽高设置和子View的对齐逻辑上,下面是具体的分析和解决方案:
问题原因
你给LinearLayout设置了android:layout_width="585dp"和android:layout_height="810dp",但Nexus S的屏幕宽度只有320dp左右(对应hdpi分辨率),这个固定宽度远超过了设备的实际屏幕宽度,导致内部设置layout_width="match_parent"的TextView宽度超出了屏幕可视区域。当你给TextView设置gravity="center"时,文字是在这个超宽的TextView内部居中,自然会有一部分文字跑到屏幕外面,看起来像是被截断了。
解决方案
方案1:修改父LinearLayout的尺寸(推荐)
把LinearLayout的固定宽高改成match_parent,让它自适应屏幕尺寸,这样内部TextView的match_parent就会和屏幕宽度一致,文字居中后就能正常显示:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:layout_editor_absoluteX="8dp" tools:layout_editor_absoluteY="8dp"> <!-- 子View保持原有属性即可 --> </LinearLayout>
方案2:调整TextView的宽度和对齐方式
如果你一定要保留LinearLayout的固定尺寸,那可以修改TextView的宽度为wrap_content,同时加上layout_gravity="center"让TextView在父容器中居中,这样文字就会在屏幕可视区域内居中:
<TextView android:id="@+id/TeamName4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" <!-- 让TextView自身在父容器居中 --> android:gravity="center" <!-- 让文字在TextView内部居中 --> android:text="Team 2 Name" android:textAppearance="@android:style/TextAppearance.Theme" android:textSize="20sp" android:textStyle="bold|italic"/>
额外优化:修复EditText的截断问题
你的EditText也存在类似冲突:android:layout_width="40dp"和android:ems="10"同时设置,10个字符的宽度远大于40dp,会导致输入内容截断。建议去掉ems="10",或者调整宽度为wrap_content并设置layout_gravity="center":
<EditText android:gravity="center" android:id="@+id/TeamScore1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:inputType="number" />
总结
核心问题就是父布局的固定尺寸超出了设备屏幕,导致子View的可显示区域超出可视范围。调整父布局尺寸或者子View的对齐方式,就能让文字正常居中显示啦~
内容的提问来源于stack exchange,提问作者Farhaan Mithagare

