У меня есть активность с двумя кнопками и TextView в LinearLayout. Мой TextView смещен вниз, и текст не помещается внутри коробки. Можете ли вы объяснить, что происходит? Я думаю, что это связано с дополнением, и я прочитал несколько дискуссий о опасностях заполнения TextView, но это не объясняет, почему текст обрезается внизу.Android TextView смещение вниз
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#800080">
<Button
android:text="This"
android:background="@drawable/button_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:text="That"
android:background="@drawable/button_green"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="Copious amounts of text that overflows onto several lines on a small screen, causing the TextView to dangle below the buttons. Why it does this I can't imagine. I only hope someone can help me with this."
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#533f93"
/>
</LinearLayout>
Этот код производит этот экран:
Пурпурный является LinearLayout, синий является TextView. Как вы можете видеть, верхняя часть TextView ниже, чем у кнопок, а нижняя часть находится ниже нижней части LinearLayout. Когда я добавляю текст в TextView, LinearLayout соответственно увеличивает его высоту, но поскольку TextView смещен, я всегда теряю нижнюю часть последней строки.
Я побежал Hierarchy Viewer, и он дал мне это каркасные:
Это показывает вертикальное смещение в верхней части, но не попадает в нижнюю часть TextView. То же каркасный с LinearLayout выбранными выглядит следующим образом:
Согласно иерархии просмотра, в верхней части кнопок на 0, а верхняя часть TextView находится в 7. Я пробовал различные исправления , в основном изъятых с этого сайта:
android:paddingTop="0dp"
android:background="@null"
android:includeFontPadding="false"
Ни одна из этих исправленных проблем.
Да, это работает! Я не понимаю, почему по умолчанию LinearLayout выводит текст за пределы его. – TomDestry
Вы можете прочитать, например, это сообщение, чтобы понять, что означает [базовое значение] (https://groups.google.com/d/topic/android-developers/1gPy9zo28ak/discussion). Таким образом, по умолчанию каждый последующий виджет в «LinearLayout» выравнивается по базовой линии со своим предыдущим виджетами. В нашем случае ** первая ** строка «TextView» выравнивается по базовой линии с текстом 'Button'.Я согласен, это не интуитивное поведение, но это так. – StenaviN