3

我试图在 Android 中获得一个非常简单的布局,但我无法让它工作。我想要的只是一个标题(通过include一个 XML 文件),然后是一个ScrollView显示大量文本的 a,以及底部的两个按钮,它们应该始终可见。

我一直在摆弄LinearLayouts 和RelativeLayouts,但不知何故,我无法让它工作。到目前为止,我所拥有的是:

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

    <include layout="@layout/header" />


    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <ScrollView
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/svDisclaimer"
        >
           <TextView 
               android:layout_width="fill_parent"
               android:layout_height="wrap_content" 
               android:id="@+id/tvDisclaimer">
           </TextView>
    </ScrollView>
         <LinearLayout      android:orientation="horizontal" 
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:layout_below="@+id/svDisclaimer"
               >
      .. [ snip ] ..
        </LinearLayout>
        </RelativeLayout>
</LinearLayout>

( .. [snip] .. 是我的按钮所在的位置)标题在那里,滚动视图弹出,但按钮无处可见。

4

3 回答 3

4

您的 ScrollView 的高度设置为fill_parent将 ScrollView 下方的所有内容推离屏幕底部。您将永远不会看到无法滚动到的内容...请尝试以下模式:

<ScrollView >
    <RelativeLayout >
        <TextView />
        <LinearLayout >
            <!-- [ snip ] -->
        </LinearLayout>
    </RelativeLayout>
</ScrollView>

您也可以使用 RelativeLayout 位置标签来删除 LinearLayout。( android:below, android:toRightOf, 等)


尝试使用我评论中的此配置:

<ScrollView
    ...
    android:above="@+id/buttons" >

    ...
</ScrollView>
<LinearLayout
    android:id="@+id/buttons"
    android:layout_alignParentBottom="true"
    ... >

    ...
</LinearLayout>
于 2012-10-08T21:15:21.780 回答
0

就像 Sam 所说,将 ScrollView 的高度设置为 fill_parent 会将按钮推离屏幕。不过,有一种方法可以使用 RelativeLayout 的布局标签使其工作。尝试这个:

<LinearLayout>
[snip]
    <RelativeLayout>
         <!-- Declare the buttons *before* the ScrollView, but use layout params to move
         them to the bottom of the screen -->
         <LinearLayout
            android:id="@+id/buttonParent"
            android:layout_alignParentBottom="true">
              [Buttons go here]
         </LinearLayout>
         <!-- The "android:layout_above" attribute forces the ScrollView to leave space for the buttons -->
         <ScrollView
           android:height="fill_parent"
           android:layout_above="@id/buttonParent" />
             [snip]
         </ScrollView>
    </RelativeLayout>
</LinearLayout>
于 2012-10-08T21:23:50.333 回答
0

另一种选择是将必须留在屏幕上的顶部和底部元素放在框架布局中。http://android-er.blogspot.ca/2011/06/example-of-framelayout.html

于 2012-10-08T22:10:06.813 回答