如何删除TextView上边距?

Mic*_*udy 25 android margin textview

我确实遇到了问题TextView.我不希望它上面有任何边距/填充.

<TextView android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/ptp_hour"
          android:textColor="@color/black"
          android:textSize="100dp"
          android:height="100dp"
          android:layout_marginTop="0dp"
          android:paddingTop="0dp"
          android:includeFontPadding="false"
          android:maxLines="1"
          android:text="10"/>
Run Code Online (Sandbox Code Playgroud)

TextView看起来像这样,尽管textSizeheight设置为相同的值,字体上方有一个空格.这让我感到困扰,因为我想把另一个视图放在相对于字体的顶部.这个间距是否包含在字体本身中?

RelativeLayout中的TextView

还有一个问题:如果我发现距离顶部20dp和底部7dp的余量在我的设备上完美运行,我可以依赖它在其他屏幕上的表现方式相似吗?(这些边距适用于按钮)

Mau*_*ycy 43

android:includeFontPadding="false"在类似的情况下,使用帮助了我很多.

  • 工作一点,但不能完美地解决我的问题. (11认同)

Tho*_*nvv 9

我有同样的问题,设置android:includeFontPadding=false没有帮助.我能在合理的时间内找到的最佳解决方案是覆盖TextView的onDraw方法并调整画布以获得字体度量的top和ascent值之间的差异:

FontMetricsInt fontMetricsInt;
@Override
protected void onDraw(Canvas canvas) {
    if (adjustTopForAscent){
        if (fontMetricsInt == null){
            fontMetricsInt = new FontMetricsInt();
            getPaint().getFontMetricsInt(fontMetricsInt);
        }
        canvas.translate(0, fontMetricsInt.top - fontMetricsInt.ascent);
    }
    super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)