Android设备横屏切换时TextView内容显示不全问题咨询
我来帮你排查这个问题,看了你的布局代码,核心问题出在LinearLayout和TextView的宽度设置搭配上,具体原因和解决办法如下:
问题原因分析
你的外层LinearLayout设置了android:layout_width="wrap_content",并且是垂直方向(vertical)布局。在竖屏状态下,LinearLayout的宽度由最宽的子View决定——此时TextView的文本内容撑开了宽度,所以能完整显示;但切换到横屏时,若其他子View(比如你代码里的TableLayout)的实际宽度比TextView所需的文本宽度要窄,LinearLayout的宽度就会被这个较窄的子View限制住。而TextView设置了android:layout_width="match_parent",只能继承LinearLayout被限制后的宽度,导致文本无法完全展示。
解决方案
这里提供两种最直接的修复方式,你可以根据自己的布局需求选择:
方案1:调整TextView的宽度为wrap_content
把TextView的android:layout_width从match_parent改成wrap_content,这样TextView的宽度会完全适配文本内容,外层LinearLayout的wrap_content也会自动撑开以容纳完整的文本,不管横屏还是竖屏都能正常显示:
<TextView android:id="@+id/title" android:layout_width="wrap_content" <!-- 此处修改 --> android:layout_height="wrap_content" android:textColor="@color/colorAccent2" android:textSize="22sp" android:padding="2dp" android:textStyle="bold" android:freezesText="true" android:gravity="center_horizontal" android:text=" text text text text text"/>
同时保留LinearLayout的android:layout_gravity="center_horizontal",可以让整个布局保持水平居中。
方案2:让LinearLayout占满屏幕宽度
如果希望LinearLayout的宽度铺满屏幕,同时让文本居中显示,可以修改LinearLayout的android:layout_width为match_parent,这样TextView的match_parent就能获得足够的宽度来展示文本:
<LinearLayout android:id="@+id/box1" android:layout_marginTop="30dp" android:background="#e4eaefec" android:layout_width="match_parent" <!-- 此处修改 --> android:padding="26dp" android:layout_gravity="center_horizontal" android:orientation="vertical" android:layout_height="wrap_content">
这种方式下,TextView的gravity="center_horizontal"会让文本在屏幕水平居中,同时有足够的宽度换行显示全部内容。
额外排查点
如果上述方案没解决问题,你可以检查这两点:
- 是否设置了
TextView的singleLine="true"或maxLines属性(你的代码里没体现,但如果有会导致文本截断) - 横屏时是否有单独的布局文件(
res/layout-land/目录下),如果有的话需要同步修改该布局
内容的提问来源于stack exchange,提问作者ali bagheri

