如何让Android布局中两个TextView实现垂直紧密排列?
解决两个TextView垂直紧密排列的问题
核心问题分析
你的布局里导致间距的主要原因有两个:
- 第二个TextView设置了全局的
layout_margin="20dp",会给它的上下左右都添加20dp的外边距,直接拉开了和上方TextView的距离; - 两个TextView都设置了
padding="10dp",内部填充会让View的实际高度变大,间接增加了垂直方向的间距。
修改方案
按以下步骤调整代码,就能实现紧密排列:
移除第二个TextView的全局外边距
删除android:layout_margin="20dp",如果需要底部与其他控件的间距,单独保留android:layout_marginBottom="20dp"即可(不需要的话也可以直接删掉)。调整内边距(按需选择)
如果不需要文本周围的内部空白,可以把两个TextView的android:padding="10dp"改为android:padding="0dp";如果想保留水平方向的内边距,可替换为android:paddingHorizontal="10dp",避免垂直内边距增加间距。调整行高(按需选择)
第一个TextView的android:lineHeight="40dp"会强制行高为40dp,若文本本身高度没这么大,会产生额外垂直空间。可以根据文本大小调整该值,或者直接删除让系统自动适配。
修改后的完整代码
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="7" android:gravity="center" android:keepScreenOn="true" android:orientation="vertical"> <TextView android:id="@+id/txtSongYear" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="0dp" android:ellipsize="marquee" android:scrollHorizontally="true" android:singleLine="true" android:text="Year" android:textAlignment="center" android:textColor="#fff" android:textSize="20sp" android:textStyle="italic"> </TextView> <TextView android:id="@+id/txtSongName" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" android:text="Song Name" android:textAlignment="center" android:textColor="#fff" android:textSize="22sp" android:textStyle="italic"> </TextView> </LinearLayout>
补充说明
父布局的android:gravity="center"会让两个TextView整体在父布局中垂直居中,修改后该效果依然保留,同时两个TextView之间会紧密贴合。如果不需要整体居中,可将gravity改为top或其他符合需求的值。
内容的提问来源于stack exchange,提问作者markzzz
相关产品推荐
相关产品推荐

