滚动视图,在布局底部有两个按钮

时间:2014-12-17 05:28:29

标签: java android scrollview xml-layout

我想创建一个具有滚动视图的布局,在布局顶部的srollview内部将有两个Textview。在中心将有两个Edittexts,在布局的底部,将有两个按钮。 但一切都将在主滚动视图下

我的要求的直观描述

Required output

我已经完成了一些滚动顶部内容的编码,但保留了滚动视图底部的按钮,这不是预期的功能。

我的布局编码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <ScrollView
        android:id="@+id/my_scrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/LinearLayout01"
        android:scrollbars="horizontal" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/welcomeToStudy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:text="Welcome to xxxxxxxxxxxxxxx!"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#54575A"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/pleaseEnter"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/welcomeToStudy"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:text="Please enter your details xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
                android:textSize="20sp" />

            <EditText
                android:id="@+id/emailSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/pleaseEnter"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:hint="Email"
                android:inputType="textEmailAddress"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>

            <EditText
                android:id="@+id/passwordSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/emailSignUp"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:hint="Password"
                android:inputType="textPassword"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>
        </RelativeLayout>
    </ScrollView>

    <LinearLayout
        android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="vertical" 
        android:layout_marginTop="5dp">

        <Button
            android:id="@+id/signUpBtn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/next_button_selector"
            android:text="Sign Up"
            android:textColor="#FFFFFF"
            android:textSize="20sp" >
        </Button>

        <Button
            android:id="@+id/registerWithFb"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:background="@drawable/next_button_xhdpi_facebook"
            android:text="Sign up with Facebook"
            android:textColor="#FFFFFF"
            android:textSize="20sp" >
        </Button>
    </LinearLayout>

</RelativeLayout>

我该怎么做才能获得预期的输出?

6 个答案:

答案 0 :(得分:4)

如果我帮到您,您需要在密码EditTextButton之间留一个空格。如果是这样,那么只需添加一个虚拟View,如下所示:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_scrollview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="horizontal" >

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

        <TextView
            android:id="@+id/welcomeToStudy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Welcome to xxxxxxxxxxxxxxx!"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#54575A"
            android:textSize="28sp" />

        <TextView
            android:id="@+id/pleaseEnter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text="Please enter your details xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
            android:textSize="20sp" />

        <EditText
            android:id="@+id/emailSignUp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:ems="10"
            android:hint="Email"
            android:inputType="textEmailAddress"
            android:singleLine="true"
            android:textSize="24sp" >
        </EditText>

        <EditText
            android:id="@+id/passwordSignUp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:ems="10"
            android:hint="Password"
            android:inputType="textPassword"
            android:singleLine="true"
            android:textSize="24sp" >
        </EditText>

        <FrameLayout
            android:id="@+id/whiteSpace"
            android:layout_width="match_parent"
            android:layout_height="450dp"
            android:layout_gravity="center_horizontal" />

        <Button
            android:id="@+id/signUpBtn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/next_button_selector"
            android:text="Sign Up"
            android:textColor="#FFFFFF"
            android:textSize="20sp" >
        </Button>

        <Button
            android:id="@+id/registerWithFb"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:background="@drawable/next_button_xhdpi_facebook"
            android:text="Sign up with Facebook"
            android:textColor="#FFFFFF"
            android:textSize="20sp" >
        </Button>

    </LinearLayout>
</ScrollView>

现在,如果您希望空白区域具有确切的高度,那么Button中的ScrollView不会过多,{I} {我认为)您可以&#39;只能通过XML执行,但您可以使用onCreate方法计算所需的高度:

final ScrollView mScrollView = (ScrollView)findViewById(R.id.my_scrollview);
final View whiteSpace = findViewById(R.id.whiteSpace);
final EditText password = (EditText)findViewById(R.id.passwordSignUp);
whiteSpace.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        // Check OS version as removeOnGlobalLayoutListener is available API>=11
        // and removeGlobalOnLayoutListener is deprecated in API<11
        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
            whiteSpace.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        } else {
            whiteSpace.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
        // Compute the height
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) whiteSpace.getLayoutParams();
        params.height = mScrollView.getHeight() - whiteSpace.getTop();
        whiteSpace.setLayoutParams(params);
    }
});

这是预期的输出: enter image description here

如果您想要不同的高度,只需更改

中指定的值即可

params.height = mScrollView.getHeight() - whiteSpace.getTop();

因为我的值被计算为所需的确切高度,因此Button可能位于可见屏幕下方。计算另一个值取决于您的要求,并且超出了您的问题范围。

答案 1 :(得分:0)

您只需将按钮放在作为ScrollView子级的RelativeLayout中。那么你实际上并不需要根RelativeLayout,但我已将它留在了,以防你需要它的其他原因 - 如果还有别的东西你真的不喜欢&#39 ; t想要滚动。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <ScrollView
        android:id="@+id/my_scrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/LinearLayout01"
        android:scrollbars="horizontal" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/welcomeToStudy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:text="Welcome to xxxxxxxxxxxxxxx!"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#54575A"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/pleaseEnter"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/welcomeToStudy"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:text="Please enter your details xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
                android:textSize="20sp" />

            <EditText
                android:id="@+id/emailSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/pleaseEnter"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:hint="Email"
                android:inputType="textEmailAddress"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>

            <EditText
                android:id="@+id/passwordSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/emailSignUp"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:ems="10"
                android:hint="Password"
                android:inputType="textPassword"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>

            <Button
                android:id="@+id/signUpBtn"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/passwordSignUp"
                android:background="@drawable/next_button_selector"
                android:text="Sign Up"
                android:textColor="#FFFFFF"
                android:textSize="20sp" >
            </Button>

            <Button
                android:id="@+id/registerWithFb"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:layout_below="@+id/signUpBtn"
                android:background="@drawable/next_button_xhdpi_facebook"
                android:text="Sign up with Facebook"
                android:textColor="#FFFFFF"
                android:textSize="20sp" >
            </Button>
        </RelativeLayout>
    </ScrollView>
</RelativeLayout>

答案 2 :(得分:0)

将线性布局内容添加到scrollview中的相对布局我认为是可行的。或者将scrollview作为root父级也可以工作。

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin" >

        <ScrollView
            android:id="@+id/my_scrollview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_above="@+id/LinearLayout01"
            android:scrollbars="horizontal" >

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/welcomeToStudy"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:text="Welcome to xxxxxxxxxxxxxxx!"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:textColor="#54575A"
                    android:textSize="28sp" />

                <TextView
                    android:id="@+id/pleaseEnter"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/welcomeToStudy"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="5dp"
                    android:text="Please enter your details xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
                    android:textSize="20sp" />

                <EditText
                    android:id="@+id/emailSignUp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/pleaseEnter"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="5dp"
                    android:ems="10"
                    android:hint="Email"
                    android:inputType="textEmailAddress"
                    android:singleLine="true"
                    android:textSize="24sp" >
                </EditText>

                <EditText
                    android:id="@+id/passwordSignUp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/emailSignUp"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="5dp"
                    android:ems="10"
                    android:hint="Password"
                    android:inputType="textPassword"
                    android:singleLine="true"
                    android:textSize="24sp" >
                </EditText>



            <Button
                android:id="@+id/signUpBtn"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/next_button_selector"
                android:text="Sign Up"
                android:textColor="#FFFFFF"
                android:textSize="20sp" >
            </Button>

            <Button
                android:id="@+id/registerWithFb"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:background="@drawable/next_button_xhdpi_facebook"
                android:text="Sign up with Facebook"
                android:textColor="#FFFFFF"
                android:textSize="20sp" >
            </Button>

        </RelativeLayout>
        </ScrollView>

    </RelativeLayout>

答案 3 :(得分:0)

试试这个..

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="horizontal" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:weightSum="3" >

        <LinearLayout
            android:id="@+id/top"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/welcomeToStudy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Welcome to xxxxxxxxxxxxxxx!"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#54575A"
                android:textSize="28sp" 
                android:gravity="center"/>

            <TextView
                android:id="@+id/pleaseEnter"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="Please enter your details xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
                android:textSize="20sp"
                android:gravity="center" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/middle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/emailSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Email"
                android:inputType="textEmailAddress"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>

            <EditText
                android:id="@+id/passwordSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Password"
                android:inputType="textPassword"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/bot"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="vertical" >

            <Button
                android:id="@+id/signUpBtn"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Sign Up"
                android:textColor="#FFFFFF"
                android:textSize="20sp" >
            </Button>

            <Button
                android:id="@+id/registerWithFb"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:text="Sign up with Facebook"
                android:textColor="#FFFFFF"
                android:textSize="20sp" >
            </Button>
        </LinearLayout>
    </LinearLayout>

</ScrollView>

答案 4 :(得分:0)

首先,我想告诉你滚动视图仅在布局不适合屏幕时才有效,然后额外内容android显示在滚动视图中。如果内容适合设备屏幕大小,则滚动视图将不起作用。如果您根据大屏幕设备设计您的布局,然后您将该布局用于小屏幕设备,此布局显示为滚动。但如果您根据小屏幕设备设计您的布局,然后您将该布局用于大屏幕设备,则此布局不会显示为滚动。

我将这种布局用于小屏幕尺寸的移动设备。 e.i samsung s2。

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin" >

        <ScrollView
            android:id="@+id/my_scrollview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scrollbars="horizontal" >

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <TextView
                    android:id="@+id/welcomeToStudy"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="35dp"
                    android:text="Welcome to xxxxxxxxxxxxxxx!"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:textColor="#54575A"
                    android:textSize="28sp" />

                <TextView
                    android:id="@+id/pleaseEnter"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/welcomeToStudy"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="35dp"
                    android:text="Please enter your details xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
                    android:textSize="20sp" />

                <EditText
                    android:id="@+id/emailSignUp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/pleaseEnter"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="35dp"
                    android:ems="10"
                    android:hint="Email"
                    android:inputType="textEmailAddress"
                    android:singleLine="true"
                    android:textSize="24sp" >
                </EditText>

                <EditText
                    android:id="@+id/passwordSignUp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/emailSignUp"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="35dp"
                    android:ems="10"
                    android:hint="Password"
                    android:inputType="textPassword"
                    android:singleLine="true"
                    android:textSize="24sp" >
                </EditText>

                <LinearLayout
                    android:id="@+id/LinearLayout01"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_marginTop="35dp"
                    android:orientation="vertical" 
                    android:layout_below="@+id/passwordSignUp">

                    <Button
                        android:id="@+id/signUpBtn"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Sign Up"
                        android:textColor="#FFFFFF"
                        android:textSize="20sp" >
                    </Button>

                    <Button
                        android:id="@+id/registerWithFb"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="8dp"
                        android:text="Sign up with Facebook"
                        android:textColor="#FFFFFF"
                        android:textSize="20sp" >
                    </Button>
                </LinearLayout>
            </RelativeLayout>
        </ScrollView>
    </RelativeLayout>

答案 5 :(得分:0)

peguerosdc's回答的基础上,我做了一些修改并完成了整个工作。新的布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <ScrollView
        android:id="@+id/my_scrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <RelativeLayout
            android:id="@+id/main_relative_layout"
            android:layout_width="match_parent"
            android:layout_height="53dp" >

            <TextView
                android:id="@+id/welcomeToStudy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="35dp"
                android:text="Welcome to xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#54575A"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/pleaseEnter"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/welcomeToStudy"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="16dp"
                android:text="Please enter your details xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
                android:textSize="20sp" />

            <EditText
                android:id="@+id/emailSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/pleaseEnter"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="35dp"
                android:ems="10"
                android:hint="Email"
                android:inputType="textEmailAddress"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>

            <EditText
                android:id="@+id/passwordSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/emailSignUp"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="8dp"
                android:ems="10"
                android:hint="Password"
                android:inputType="textPassword"
                android:singleLine="true"
                android:textSize="24sp" >
            </EditText>

            <LinearLayout
                android:id="@+id/LinearLayout01"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_below="@+id/passwordSignUp"
                android:layout_marginTop="35dp"
                android:orientation="vertical" >

                <Button
                    android:id="@+id/signUpBtn"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/next_button_selector"
                    android:text="Sign Up"
                    android:textColor="#FFFFFF"
                    android:textSize="20sp" >
                </Button>

                <Button
                    android:id="@+id/registerWithFb"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    android:background="@drawable/next_button_xhdpi_facebook"
                    android:text="Sign up with Facebook"
                    android:textColor="#FFFFFF"
                    android:textSize="20sp" >
                </Button>
            </LinearLayout>
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

方法是根据设备屏幕大小以编程方式更改main_relative_layout值,以适应屏幕中的布局。我没有使用空格,我将LinearLayout01ParentBottom对齐。

获取设备屏幕大小并以编程方式更改main_relative_layout的代码(onCreate内):

// for button placement purely design workout
        DisplayMetrics displayMetrics = this.getResources().getDisplayMetrics();

        float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
        float dpWidth = displayMetrics.widthPixels / displayMetrics.density;

        Log.e("Screen height:", "" + dpHeight);
        RelativeLayout rl = (RelativeLayout) findViewById(R.id.main_relative_layout);
        rl.getLayoutParams().height = dpToPx((int) dpHeight - 70);

方法dpToPx

//method to convert from dp to px
    public int dpToPx(int dp) {
        DisplayMetrics displayMetrics = SignUp.this.getResources().getDisplayMetrics();
        int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));       
        return px;
    }