我需要一个大于屏幕的用户表单。布局包括一个固定的“标题区域”,表单(可能在滚动视图中)和底部的按钮。我创建了三个布局,中间布局是一个带有垂直方向的LinearLayout的ScrollView。不幸的是,表单将按钮推离屏幕?!
有一个简单的例子吗?
我想我可以使用ListView,但我认为我的ScrollView更易于管理。这是我的布局......
<?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"
>
<!-- Title Area on top -->
<LinearLayout
android:id="@+id/layout_form"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="0dip"
android:layout_marginBottom="0dip"
android:paddingTop="20dip"
android:paddingBottom="20dip"
android:paddingLeft="5dip"
android:paddingRight="10dip"
android:src="@drawable/logo"
android:layout_gravity="center"
android:layout_weight="1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="2"
android:layout_marginTop="0dip"
android:layout_marginBottom="0dip"
android:layout_marginLeft="4dip"
android:layout_marginRight="4dip"
android:text="@string/title_create"
/>
</LinearLayout>
<!-- Form entry on top -->
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:clipChildren="true"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="8dip"
android:layout_marginRight="8dip"
android:text="@string/label_field_one"
/>
<EditText
android:id="@+id/edit_field_one"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:hint="@string/hint_field_one"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="8dip"
android:layout_marginRight="8dip"
android:text="@string/label_field_two"
/>
<EditText
android:id="@+id/edit_field_two"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:hint="@string/hint_field_two"
/>
<!-- Repeat label-text and edit-text until done ... -->
</LinearLayout>
</ScrollView>
<!-- "spring" between form and wizard buttons. -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="2"
>
<Button
android:id="@+id/btn_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1"
android:text="@string/button_submit"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:3)
如果我理解正确,这是一个非常常见的东西 - 有一个固定的页眉和页脚,并填充中间的任何东西(在你的情况下,ScrollView)。这就是你要找的东西吗?如果是这样,你会想尝试下面的东西:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
>
//.....stuff here
</LinearLayout>
<LinearLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
>
//.....stuff here
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/footer"
android:layout_below="@id/header"
>
//......stuff here
</ScrollView>
</RelativeLayout>
基本上,你定义一个标题,给它一个固定的高度(在这种情况下是wrap_content),并将它设置为对齐到父标题的顶部(RelativeLayout)。然后,对页脚执行相同操作,将其与父项的底部对齐。根据您的情况,您可以仅为页脚替换LinearLayout的Button,或者只需将按钮放在LinearLayout中。如果没有额外的LinearLayout,可能会稍微加快布局。但无论如何,接下来,定义你的表单,滚动区域。将高度设置为fill_parent,并将其指向页脚上方和标题下方。这将导致它占用页眉和页脚之间的所有剩余空间。