如何并排设置两个或多个按钮以填充布局底部的屏幕宽度(不像粘性菜单)?

时间:2014-04-10 08:22:43

标签: android xml android-layout

我试图在屏幕底部并排设置两个或更多按钮,我知道在LinearLayout中你可以使用 android:layout_weight 并排设置按钮 我知道我可以通过使用相对布局在屏幕底部设置按钮,但我似乎无法同时为相同的按钮做两个!那可能吗?

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true"
    android:background="#0B333F"
    android:fillViewport="true"
    android:orientation="vertical"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp" >

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical" >
...
...
...
...
...
...
...
...
...
  <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:orientation="horizontal"
            android:paddingLeft="5dp"
            android:paddingRight="5dp" >

            <!-- <LinearLayout -->
            <!-- android:layout_width="fill_parent" -->
            <!-- android:layout_height="wrap_content" -->
            <!-- android:layout_alignParentBottom="true" -->
            <!-- android:layout_marginTop="5dp" -->
            <!-- android:paddingLeft="5dp" -->
            <!-- android:paddingRight="5dp" > -->


            <!-- android:layout_weight="1" -->

            <Button
                android:id="@+id/saveButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="5dp"
                android:background="#F0BF00"
                android:text="@string/save"
                android:textColor="#FFF"
                android:textStyle="bold" />

            <Button
                android:id="@+id/cancelButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:background="#F0BF00"
                android:text="@string/cancel"
                android:textColor="#FFF"
                android:textStyle="bold" />
            <!-- </LinearLayout> -->
        </RelativeLayout>
    </LinearLayout>

</ScrollView>

正如你在评论部分所看到的那样,我确实尝试了两种,但似乎无法让它发挥作用!请帮忙。

FYI

我不想要一个粘性的菜单;在小屏幕上会有一个滚动所以这不会影响小屏幕,因为它已经在他的底部,但是大屏幕不需要滚动我想要底部的按钮

6 个答案:

答案 0 :(得分:1)

如果您需要在底部查看,则必须设置

  android:gravity="bottom"

LinearLayout

更新:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:background="#0B333F"
android:fillViewport="true"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1"
        android:orientation="vertical" >
    </LinearLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:orientation="horizontal"
        android:paddingLeft="5dp"
        android:paddingRight="5dp" >

        <!-- <LinearLayout -->
        <!-- android:layout_width="fill_parent" -->
        <!-- android:layout_height="wrap_content" -->
        <!-- android:layout_alignParentBottom="true" -->
        <!-- android:layout_marginTop="5dp" -->
        <!-- android:paddingLeft="5dp" -->
        <!-- android:paddingRight="5dp" > -->


        <!-- android:layout_weight="1" -->

        <Button
            android:id="@+id/saveButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:background="#F0BF00"
            android:text="@string/save"
            android:textColor="#FFF"
            android:textStyle="bold" />

        <Button
            android:id="@+id/cancelButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:background="#F0BF00"
            android:text="@string/cancel"
            android:textColor="#FFF"
            android:textStyle="bold" />
        <!-- </LinearLayout> -->
    </RelativeLayout>
</LinearLayout>

</ScrollView>

答案 1 :(得分:0)

你可以这样做:

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


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical" >
    </LinearLayout>

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

        <Button
            android:id="@+id/saveButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:background="#F0BF00"
            android:text="save"
            android:textColor="#FFF"
            android:textStyle="bold" />

        <Button
            android:id="@+id/cancelButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:background="#F0BF00"
            android:text="cancel"
            android:textColor="#FFF"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>

答案 2 :(得分:0)

我通过添加

来管理
android:gravity="bottom"

正如PiYusH GuPtA建议包含按钮的 LinearLayout ,但我还需要从

更改 LinearLayout 布局
android:layout_height="wrap_content"

android:layout_height="fill_parent"

-          

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

    ...
    ...
    ...
    ...
    ...
    ...

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:gravity="bottom" >

        <Button
            android:id="@+id/saveButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android:layout_weight="1"
            android:background="#F0BF00"
            android:text="@string/save"
            android:textColor="#FFF"
            android:textStyle="bold" />

        <Button
            android:id="@+id/cancelButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_weight="1"
            android:background="#F0BF00"
            android:text="@string/cancel"
            android:textColor="#FFF"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>

答案 3 :(得分:0)

如果您希望屏幕上始终显示您的按钮,并且您的按钮位于底部中心,请移动ScrollView,如下所示。如果您希望按钮填充底线或相对于边缘放置,则可以删除底部的LinearLayout,并在按钮上设置几个对齐属性。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="40dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp" >

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:background="#0B333F"
        android:fillViewport="true"
        android:orientation="vertical"
        android:paddingBottom="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="10dp" >

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

            .....
            .....
            .....
            .....
            .....

        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/saveButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#F0BF00"
            android:text="@string/save"
            android:textColor="#FFF"
            android:textStyle="bold" />

        <Button
            android:id="@+id/cancelButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:background="#F0BF00"
            android:text="@string/cancel"
            android:textColor="#FFF"
            android:textStyle="bold" />
    </LinearLayout>

</RelativeLayout>

答案 4 :(得分:0)

我认为这是一个很好的解决方案

<RelativeLayout > 
     <LinearLayout
        android:id="@+id/bottomLayout"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">
        <Button />
        <Button />
     </LinearLayout>
     <ScrollView 
        android:layout_alignParentTop="true"
        android:layout_above="@id/bottomLayout">
      </ScrollView>
</RelativeLayout>

它们只是嵌套的布局结构,因此您需要添加所需的更多属性。请尽快告诉我结果。

答案 5 :(得分:0)

如果您希望按钮始终位于内容的底部,并不总是在屏幕上显示,并且要填充屏幕的最下一行,则可以执行以下操作。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true"
    android:background="#0B333F"
    android:fillViewport="true"
    android:orientation="vertical"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp" >

        ........
        ........
        ........
        ........
        ........
        ........

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/saveButton"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="#F0BF00"
                android:text="@string/save"
                android:textColor="#FFF"
                android:textStyle="bold" />

            <Button
                android:id="@+id/cancelButton"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="5dp"
                android:background="#F0BF00"
                android:text="@string/cancel"
                android:textColor="#FFF"
                android:textStyle="bold" />
        </LinearLayout>
    </RelativeLayout>
</ScrollView>