删除堆叠的TextView之间的空间

bor*_*ges 27 android textview android-layout

我有一个垂直的里面LinearLayout有两个TextView.前者包含静态文本属性(它的文本永远不会更改),最后一个包含回归计时器.下图显示了两个项目:

堆叠的textviews

我想消除两个文本都有顶部和底部的空白区域.我尝试了几种方法......

android:includeFontPadding="false"
android:lineSpacingMultiplier="1"
android:lineSpacingExtra="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:layout_marginTop="0dp"
android:layout_marginBottom="0dp"
Run Code Online (Sandbox Code Playgroud)

......但他们都没有删除文本上方的空格.如何在没有任何额外空间的情况下使两个文本彼此靠近?

PS:我发现了类似的问题,但没有人回答.


完整的布局代码:

<LinearLayout 
    android:id="@+id/boxTime"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp" >

    <TextView
        android:id="@+id/textRemainingTime2"
        android:layout_width="wrap_content"
        android:layout_heigh="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:textSize="70sp"
        android:includeFontPadding="false"
        android:lineSpacingMultiplier="1"
        android:lineSpacingExtra="0dp"
        android:paddingTop="0dp"
        android:paddingBottom="0dp"
        android:layout_marginTop="0dp"
        android:layout_marginBottom="0dp"
        android:text="@string/title" />

    <TextView
        android:id="@+id/textRemainingTime"
        android:layout_width="wrap_content"
        android:layout_heigh="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:includeFontPadding="false"
        android:lineSpacingMultiplier="1"
        android:lineSpacingExtra="0dp"
        android:paddingTop="0dp"
        android:paddingBottom="0dp"
        android:layout_marginTop="0dp"
        android:layout_marginBottom="0dp"
        android:textSize="107sp"
        android:text="@string/timer" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Bar*_*rak 44

尝试使用负边距.可能需要花一点时间才能正确使用数字,但我之前已经完成了它并且效果很好.

android:layout_marginTop="-5dp"
Run Code Online (Sandbox Code Playgroud)


Zso*_*any 16

使文本的基线等于TextView的底部.

public class BaselineTextView extends TextView {

    public BaselineTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        int yOffset = getHeight() - getBaseline();
        canvas.translate(0, yOffset);
        super.onDraw(canvas);
    }

}
Run Code Online (Sandbox Code Playgroud)

注意:为了避免切断下载调用setClipChildren(false)TextView的父级ViewGroup(android:clipChildren="false"XML格式).

  • 这适用于任何字体,字体大小,屏幕密度等.为什么不是接受的答案? (3认同)

Kal*_*lle 12

默认情况下,TextView包含一些填充以为重音字符留出空间.你可以用以下方式关闭它:

 android:includeFontPadding="false"
Run Code Online (Sandbox Code Playgroud)

要么

 textView.setIncludeFontPadding(false)
Run Code Online (Sandbox Code Playgroud)

  • 这个对我有用。但是文本的上行和下行仍然有一些空间如何删除它? (3认同)