ImageView出现在LinearLayout的错误位置

时间:2014-12-02 00:00:55

标签: android textview imageview android-linearlayout

我正在关注Head First Android Development的教程,我无法弄清楚为什么LinearLayout无法正常工作。

这是xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity"

android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
    android:id="@+id/imageTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/test_image_title"/>

<TextView
    android:id="@+id/imageDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/test_image_date"/>

<ImageView
    android:id="@+id/imageDisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/test_image"/>

<TextView
    android:id="@+id/imageDescription"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/test_image_description"/>

</LinearLayout>

问题是图像位于中间,但图像应位于上侧显示的两行文本下方,而不是中间。最后一个TextView也没有显示。所有内容都应按xml中声明的顺序显示。

这是教程显示的内容。

我尝试将ImageView部分放在TextViews之上,然后我根本没有文字,图像仍在中间。

现在,自从该书发布以来,我的行为有所改变,还是我错过了什么?

3 个答案:

答案 0 :(得分:1)

我找到了答案:ImageView in android XML layout with layout_height="wrap_content" has padding top & bottom

您需要将其添加到ImageView:

android:adjustViewBounds="true"

由于某些原因,如果没有该行,wrap_content不适用于高度。

答案 1 :(得分:0)

如果您不知道文字的长度或者您无法指定图像的高度和重量,则可以使用wrap_content,但您必须定义ImageView和{ {1}} TextView上的{1}}位置。例如,您可以使用LinearLayoutImageViewandroid:paddingLeftandroid:paddingTop等来定义android:layout_centerHorizontal位置。这就是我在{上使用该代码的方式{1}}:

android:layout_alignParentTop

以及我如何使用ImageView

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="88dp"
    android:src="@drawable/your_image_resource" />

您可以找到其他TextView属性以及如何在Google上使用它。

答案 2 :(得分:-1)

如上所述,如果您的布局在样本中正确定义,它将显示4行,并且您的组件显示每行。尝试将android:orientation =“垂直”更改为水平以显示每行的完整组件填充,对不起,如果我误解