我的登录屏幕布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/login_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff">
<include
android:id="@+id/headerlayout"
layout="@layout/headerview"
android:layout_height="50dip"
android:layout_width="fill_parent" />
<ImageView
android:id="@+id/imgIcon"
android:src="@drawable/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txtUserName"
android:layout_width="fill_parent"
android:layout_height="80dip"
android:lines="1"
android:textColor="#000000"
android:textStyle="bold"
android:textSize="16dip"
android:text="User Name"/>
</LinearLayout>
但是,我无法看到ImageView
和TextView
。只有 headerview 可见,下方有白色布局。为什么会这样?
谢谢,
石
答案 0 :(得分:1)
只需添加
android:orientation="vertical"
在<LinearLayout>
标记中。
修改强>
默认情况下,方向设置为“水平”意味着每个组件都将水平添加,因为您对标题使用"fill_parent"
,因此它覆盖了所有位置(宽度),并且没有空间供其他组件显示。因此,当您添加垂直时,所有组件都垂直放置。因此,有足够的空间可以让组件自行布局。More detail here
答案 1 :(得分:0)
Bydefault LinearLayout
水平对齐所有孩子的单向(如果你没有指定android:orientation)。
所以在这种情况下,它是水平添加视图。您的标题部分占据了屏幕的整个宽度(因为您已在android:layout_width="fill_parent"
标记中指定了include
,并且TextView
和ImageView
没有剩余空间。
您只需在LinearLayout
中添加方向标记,并将其值设置为垂直。
即android:orientation="vertical"
。
LinearLayout from Android Docs 说
LinearLayout在一个方向上对齐所有子项 - 垂直或水平,具体取决于您定义方向属性的方式。所有的孩子一个接一个地堆叠,所以垂直列表每行只有一个孩子,无论它们有多宽,水平列表只有一行高(最高的孩子的高度加上填充)。 LinearLayout尊重子项与每个孩子的重力(右,中或左对齐)之间的边距。