5

我在 LinearLayout 中有一个带有两个按钮和一个 TextView 的活动。我的 TextView 向下偏移,文本不适合框内。你能解释发生了什么吗?我认为它与填充有关,并且我已经阅读了一些关于 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,它给了我这个线框:

来自 Hierarchy Viewer 的线框图像

它显示了顶部的垂直偏移,但错过了 TextView 的底部。选择了 LinearLayout 的相同线框如下所示:

来自 Hierarchy Viewer 的线框图像 - 已选择 LinearLayout

根据 Hierarchy Viewer 的说法,按钮的顶部是 0,但 TextView 的顶部是 7。我尝试了各种修复,主要来自这个站点:

    android:paddingTop="0dp"
    android:background="@null"
    android:includeFontPadding="false"

这些都没有解决我的问题。

4

4 回答 4

5

android:baselineAligned您的属性设置LinearLayoutfalse.

从文档:

当设置为false时,防止布局对齐其子项的基线。当孩子使用不同的重力值时,此属性特别有用。默认值为true

于 2012-05-16T03:54:28.970 回答
2

将 Textview 的 layout_gravity 设置为 center_vertical

<?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:layout_width="wrap_content"
    android:layout_height="wrap_content"
/>
<Button
    android:text="That"

    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"
android:layout_gravity="center_vertical"/>
</LinearLayout>
于 2012-05-16T04:53:07.210 回答
0

尝试像这样为 TextView 设置 layout_gravity:

<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"
    android:layout_gravity="top"
/>
于 2012-05-16T03:56:02.347 回答
0

如果您对多个 TextView 有此问题,您可以添加android:gravity="center_vertical"LinearLayout

于 2016-02-18T08:07:33.730 回答