我正在关注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之上,然后我根本没有文字,图像仍在中间。
现在,自从该书发布以来,我的行为有所改变,还是我错过了什么?
答案 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}}位置。例如,您可以使用LinearLayout
,ImageView
,android:paddingLeft
,android: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 =“垂直”更改为水平以显示每行的完整组件填充,对不起,如果我误解