Подтвердить что ты не робот

Как удалить верхнее поле 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"/>

Мой TextView выглядит так, и, несмотря на то, что textSize и height установлены в одно и то же значение, над шрифтом есть пробел. Это беспокоит меня, потому что я хочу поместить другое представление относительно верхней части шрифта. Этот интервал включен в сам шрифт?

TextView in RelativeLayout

И еще один вопрос: если я узнаю, что край 20dp сверху и 7dp снизу отлично работает на моем устройстве, могу ли я полагаться, что он будет вести себя аналогичным образом на других экранах? (эти поля для кнопок)

4b9b3361

Ответ 1

с помощью android:includeFontPadding="false" мне очень помогли в подобной ситуации.

Ответ 2

У меня была такая же проблема, когда настройка 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);
}

Ответ 3

Что вам нужно сделать, так это поставить другой вид относительно верхней части шрифта и дать ему отрицательный android:layout_marginBottom в dip, чтобы он соответствовал верхней части шрифта. Если у шрифта есть запас, я не думаю, что есть лучший способ сделать это.

Ответ 4

Да, это пространство включено по умолчанию. Вы не можете удалить это пространство в соответствии с моей областью поиска. Поэтому вам нужно реализовать некоторую логику, чтобы иметь такое представление.

См. ниже Изображение:

enter image description here

Это не очень хорошая идея, но вы можете сделать код ниже:

    <?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" относится к вашим свойствам, а второй - как я установил для вас.

Enjoy.:))