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のマージンが私のデバイスで完全に機能することがわかった場合、他の画面でも同じように動作することを信頼できますか? (これらのマージンはボタン用です)
Android:includeFontPadding="false"
を使用すると、同様の状況で大いに役立ちました。
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);
}
あなたがする必要があるのは、フォントの上部を基準にして他のビューを配置し、フォントの上部と一致するように、ディップに負のAndroid:layout_marginBottom
を与えることです。フォントにマージンがある場合、それを行うより良い方法はないと思います。
はい、このスペースはデフォルトで含まれています。私の検索エリアでは、そのスペースを削除することができません。したがって、そのようなビューを得るには、いくつかのロジックを実装する必要があります。
以下の画像を参照してください:
それは良い考えではありませんが、以下のコードのように行うことができます:
<?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」はあなたのプロパティであり、2番目は私があなたのために設定したとおりです。
楽しい。 :))