修复Android屏幕底部的内容

时间:2012-07-31 19:14:08

标签: android android-layout

如何将按钮和其他内容固定在屏幕底部,与其他内容无关?

我的布局如下:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true" >

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:gravity="center_horizontal" >

            <TextView ... />

            ...

            <TextView ... />

        </LinearLayout>

        <Button
            android:id="@+id/ButtonMain"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1"
            android:text="@string/button_text"
            android:textSize="30px"
            android:textStyle="bold"
            android:width="200px" />

    </LinearLayout>

</ScrollView>

我希望ButtonMain的底部始终位于屏幕的底部。但是,该按钮仅在线性布局中的内容下方呈现,而不是在屏幕底部。我已经尝试了layout_gravity="center_horizontal|bottom",并将按钮置于其自身的LinearLayout中并具有相似的重力,但这不起作用。

如何完成此布局?

4 个答案:

答案 0 :(得分:2)

您可以使用RelativeLayout而不是LinearLayout。通过添加以下标记,它将被分隔到屏幕按钮

android:layout_alignParentBottom="true"

如果您希望按钮始终位于底部,则应将ScrollView放在RelativeLayout内,并在底部显示按钮

请参阅: http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html

答案 1 :(得分:1)

将Scroll视图包装在相对布局中,但首先将xml文件中的按钮与alignParentBottom字段设置为true。然后将scrollView放入并将其设置为按钮上方。然后滚动视图将填充剩余的空间,并始终位于按钮上方,按钮将始终显示而不是滚动。

答案 2 :(得分:1)

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroller"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >

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

        <TextView
            android:id="@+id/txt1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Hello"
            android:textSize="25sp" />

        <TextView
            android:id="@+id/txt2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Hello2"
            android:textSize="25sp" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="bottom|center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/ButtonMain"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:text="click me"
                android:textSize="30px"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>

</ScrollView>

答案 3 :(得分:1)

根据上述评论,OP希望Button位于ScrollView之外。但是,XML只能有一个根元素,因此您必须将ScrollViewButton包装在某种布局中。

我在下面演示了使用您的初始布局和尺寸:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:fillViewport="true" >

        <!-- You can remove one of these two LinearLayouts, since they just nest each other. Which one you want to remove is up to you. -->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:gravity="center_horizontal" >

                <TextView ... />

                ...

                <TextView ... />

            </LinearLayout>

        </LinearLayout>

    </ScrollView>

    <Button
        android:id="@+id/ButtonMain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:text="@string/button_text"
        android:textSize="30px"
        android:textStyle="bold"
        android:width="200px" />

</LinearLayout>

如果您有任何问题,请与我们联系!