我确实遇到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"/>
我的TextView
看起来像这样,尽管textSize
和height
设置为相同的值,但字体上方还有一个空格。这让我感到困扰,因为我想把另一个视图放在相对于字体的顶部。这个间距是否包含在字体本身中?
还有一个问题:如果我发现距离顶部20dp和底部7dp的余量在我的设备上完美运行,我可以依赖它在其他屏幕上的行为方式相似吗? (这些边距用于按钮)
答案 0 :(得分:43)
使用android:includeFontPadding="false"
在类似情况下帮助了我很多。
答案 1 :(得分:9)
我遇到了同样的问题,即设置android:includeFontPadding=false
没有帮助。我能在合理的时间内找到的最佳解决方案是覆盖TextView的onDraw
方法,并调整画布以获取字体指标的顶部和上升值之间的差异:
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);
}
答案 2 :(得分:2)
您需要做的是将另一个视图放在相对于字体顶部的位置,并在倾角中给它一个负android:layout_marginBottom
,使其与字体的顶部匹配。如果字体有边距,我认为没有更好的方法。
答案 3 :(得分:1)
是的,默认包含此空格。您无法根据我的搜索区域删除该空间。所以你需要实现一些逻辑来获得这样的观点。
见下图:
这不是一个好主意,但你可以像下面的代码一样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:background="#ffffff">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ptp_hour"
android:textColor="@android:color/black"
android:textSize="100sp"
android:lineSpacingMultiplier="0.8"
android:scrollY="-100dp"
android:scrollX="100dp"
android:text="10"/>
<TextView
android:text="10"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#00FFFFFF"
android:shadowColor="#000000"
android:shadowDy="-50"
android:shadowRadius="1"
android:textSize="100dp"/>
</LinearLayout>
这里,第一个“10”是你的属性,第二个是我为你设定的。
享受。 :))