Android LinearLayout作为屏幕页脚

时间:2014-09-30 19:19:36

标签: android android-linearlayout relativelayout footer

我有这样的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="@dimen/action_bar_default_height"
    android:layout_marginTop="25dp"
    android:background="@drawable/gradient"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <ImageButton ... />

    <TextView ... />

    <View
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="1" />

    <ImageView ... />

    <ImageButton ... />

    <ImageButton ... />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

        <!-- All extra views are inflated here, if needed -->

    </LinearLayout>

<!-- Main view -->

    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" />

<!-- HERE I WANT TO PUT A FOOTER -->
<LinearLayout
    android:id="@+id/FOOTER"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

        <!-- footer.xml WILL BE INFLATED HERE -->

    </LinearLayout>

</LinearLayout>

页脚是另一个将在FOOTER LinearLayout中膨胀的.xml文件(footer.xml)。 我尝试将FOOTER更改为RelativeLayout并将android:layout_alignParentBottom =“true”添加到footer.xml LinearLayout,但它不起作用。

footer.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
...
</LinearLayout>

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

由于XML中的所有LinearLayout都是&#34; wrap_content&#34;,因此您需要将其中一个的权重设置为&#34; 1&#34;所以那家伙实际上会占用所有可能的空间。我会把它交给&#34;主视图&#34;。基本上你应该添加android:layout_weight =&#34; 1&#34;它。

将页脚更改为relativelayout不会起作用。那些&#34;相对父母的底部&#34;如果PARENT是相对布局,则工作正常。不是孩子。

答案 1 :(得分:1)

尝试添加

android:layout_weight="1"

对于你想要占用所有额外垂直空间的LinearLayout(我假设这是你的主视图评论下的那个?)

这将强制页脚线性布局到其父级的底部。

此外,您可能需要考虑仅为footer.xml布局使用include标记,而不是将其作为具有ID FOOTER的LinearLayout的子项。

因此,您应该能够完全删除ID为FOOTER的LinearLayout,并将其替换为include标记。

类似的东西:

<include android:id="@+id/FOOTER" layout="@layout/footer" android:layout_width="fill_parent" android:layout_height="wrap_content"/>

答案 2 :(得分:0)

我无法看到为什么将专利布局更改为相对无效的原因。尝试删除除页脚之外的所有XML,看看它是否有效。然后将其添加回来,但是