我在RelativeLayout中的包含有什么问题?

时间:2010-07-09 23:59:39

标签: android android-layout

我想在顶部创建一个标题栏,在底部创建一个导航栏。我使用include将标题栏布局和导航栏布局包含在主布局中,如下所示。结果是标题栏和导航栏都显示在屏幕顶部。有人能告诉我为什么吗?谢谢!

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/home_widget" android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="@drawable/background">

    <include android:id="@+id/title_bar" layout="@layout/title_bar" 
        android:layout_alignParentTop="true" />

    <include android:id="@+id/navigation_bar" layout="@layout/navigation_bar" 
        android:layout_alignParentBottom="true"/> 
</RelativeLayout>

[编辑] 我找不到根本原因。但是以下工作:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/home_widget" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:background="@drawable/background">

<RelativeLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true"
    android:id="@+id/title_bar" >

    <include layout="@layout/title_bar" />
</RelativeLayout>

<RelativeLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true"
    android:id="@+id/navigation_bar" >

    <include layout="@layout/navigation_bar" />
 </RelativeLayout>

2 个答案:

答案 0 :(得分:45)

为了覆盖您所包含的布局的属性,您还必须覆盖布局宽度和布局高度。如果未覆盖这两个设置,则会忽略您尝试的任何其他布局更改。

您的布局

<include android:id="@+id/title_bar" layout="@layout/title_bar" 
    android:layout_alignParentTop="true"
/>
<include android:id="@+id/navigation_bar" layout="@layout/navigation_bar" 
    android:layout_alignParentBottom="true"/>

实际上应该使用换行内容或填充父对象。

<include android:id="@+id/navigation_bar" layout="@layout/navigation_bar"  android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"/>

答案 1 :(得分:0)

根据它的外观,你无需填充顶部和底部栏之间的空间。

作为一方,我倾向于使用LinearLayout,并以下列方式使用layout_weight属性;

title_bar&amp; navigation_bar get layout_weight =“0”,两者之间的内容得到layout_weight =“1”。这告诉布局管理器如果您的线性布局是,则扩展内容以填充两者之间的空间;

title_bar 内容 navigation_bar