Как удалить верхнее поле TextView? - PullRequest
25 голосов
/ 11 декабря 2011

У меня проблема с 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 снизу отлично работает на моем устройстве, могу ли я рассчитывать, что на других экранах он будет вести себя аналогичным образом? (эти поля для кнопок)

Ответы [ 4 ]

43 голосов
/ 18 апреля 2012

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

9 голосов
/ 14 апреля 2014

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

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

1 голос
/ 24 января 2012

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

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

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

Наслаждайтесь.:))

...