我在ScrollView中遇到问题。当我在X10i上运行我的应用程序时,它工作正常,但是当我将视图更改为横向时,底部布局的一半(RelativeLayout)下移到屏幕。这是我的布局代码。请建议一个适用于所有手机的通用解决方案,不仅适用于X10i。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
android:layout_marginBottom="50dip">
<ScrollView
android:id="@+id/ScrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dip" >
<RelativeLayout
android:id="@+id/layoutR"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView android:id="@+id/galleryPic"
android:layout_width="140dip"
android:layout_height="175dip"
android:background="#ff666666" />
<TextView
android:id="@+id/lblmail"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dip"
android:text="E_mail:"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/galleryPic" />
<EditText
android:id="@+id/txt_email"
android:layout_width="170dip"
android:layout_height="32dip"
android:layout_marginLeft="5dip"
android:hint="e-mail"
android:maxLines="1"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/galleryPic"
android:layout_below="@+id/lblmail" />
<TextView
android:id="@+id/lblpass"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:layout_marginLeft="5dip"
android:text="Password:"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/galleryPic"
android:layout_below="@+id/txt_email" />
<EditText
android:id="@+id/txt_pass"
android:layout_width="170dip"
android:layout_height="32dip"
android:password="true"
android:maxLines="1"
android:layout_marginLeft="5dip"
android:hint="password"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/galleryPic"
android:layout_below="@+id/lblpass" />
<TextView
android:id="@+id/lblrepass"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:layout_marginLeft="5dip"
android:text="Re-Password:"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/galleryPic"
android:layout_below="@+id/txt_pass" />
<EditText
android:id="@+id/txt_repass"
android:layout_width="170dip"
android:layout_height="32dip"
android:password="true"
android:maxLines="1"
android:layout_marginLeft="5dip"
android:hint="re-password"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/galleryPic"
android:layout_below="@+id/lblrepass" />
<Button
android:id="@+id/btn_Gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:typeface="serif"
android:textStyle="bold"
android:text="Browse"
android:layout_below="@+id/galleryPic" />
<TextView
android:id="@+id/lblname"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:text="Name:"
android:typeface="serif"
android:textStyle="bold"
android:layout_marginTop="6dip"
android:layout_below="@+id/btn_Gallery" />
<EditText
android:id="@+id/txt_name"
android:layout_width="224dip"
android:layout_height="32dip"
android:hint="name"
android:maxLines="1"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_marginTop="3dip"
android:layout_toRightOf="@+id/lblname"
android:layout_below="@+id/btn_Gallery"
android:layout_marginLeft="5dip" />
<TextView
android:id="@+id/lblage"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:text="Age:"
android:typeface="serif"
android:textStyle="bold"
android:layout_marginTop="9dip"
android:layout_below="@+id/lblname" />
<EditText
android:id="@+id/txt_age"
android:layout_width="225dip"
android:layout_height="32dip"
android:hint="age"
android:numeric="integer"
android:maxLines="1"
android:maxLength="3"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/lblage"
android:layout_below="@+id/txt_name"
android:layout_marginLeft="19dip" />
<TextView
android:id="@+id/lblsex"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:text="Sex:"
android:typeface="serif"
android:textStyle="bold"
android:layout_marginTop="12dip"
android:layout_below="@+id/lblage" />
<EditText
android:id="@+id/txt_sex"
android:layout_width="226dip"
android:layout_height="32dip"
android:hint="sex"
android:maxLines="1"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/lblsex"
android:layout_below="@+id/txt_age"
android:layout_marginLeft="20dip" />
<TextView
android:id="@+id/lbllocation"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:text="Location:"
android:typeface="serif"
android:textStyle="bold"
android:layout_marginTop="12dip"
android:layout_below="@+id/lblsex" />
<EditText
android:id="@+id/txt_location"
android:layout_width="206dip"
android:layout_height="32dip"
android:hint="location"
android:maxLines="1"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/lbllocation"
android:layout_below="@+id/txt_sex"
android:layout_marginLeft="5dip" />
<TextView
android:id="@+id/lblstatus"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:text="Status:"
android:typeface="serif"
android:textStyle="bold"
android:layout_marginTop="12dip"
android:layout_below="@+id/lbllocation" />
<EditText
android:id="@+id/txt_status"
android:layout_width="225dip"
android:layout_height="32dip"
android:hint="status"
android:maxLines="1"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/lblstatus"
android:layout_below="@+id/txt_location"
android:layout_marginLeft="5dip" />
<TextView
android:id="@+id/lblinterest"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:text="Interest:"
android:typeface="serif" android:textStyle="bold"
android:layout_marginTop="12dip"
android:layout_below="@+id/lblstatus" />
<EditText
android:id="@+id/txt_interest"
android:layout_width="212dip"
android:layout_height="32dip"
android:hint="interest"
android:maxLines="1"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/lblinterest"
android:layout_below="@+id/txt_status"
android:layout_marginLeft="5dip" />
<TextView
android:id="@+id/lblorientation"
android:layout_width="wrap_content"
android:layout_height="21dip"
android:text="Orientation:"
android:typeface="serif"
android:textStyle="bold"
android:layout_marginTop="12dip"
android:layout_below="@+id/lblinterest" />
<EditText
android:id="@+id/txt_orientation"
android:layout_width="187dip"
android:layout_height="32dip"
android:hint="status"
android:maxLines="1"
android:textSize="10sp"
android:typeface="serif"
android:textStyle="bold"
android:layout_toRightOf="@+id/lblorientation"
android:layout_below="@+id/txt_interest"
android:layout_marginLeft="5dip"/></RelativeLayout></ScrollView>
<RelativeLayout
android:layout_marginTop="-32dip"
android:gravity="bottom"
android:layout_height="50dip"
android:layout_width="fill_parent"
android:background="#ff999999">
<Button
android:id="@+id/btnNext"
android:layout_width="100dip"
android:layout_height="45dip"
android:text="Next"
android:layout_marginTop="2dip"
android:layout_alignParentRight="true"/></RelativeLayout></LinearLayout>
答案 0 :(得分:2)
这是很多XML。 O_o
创建两个单独的布局实际上不一定是解决您遇到的问题所必需的。这是我的建议(我正在删除中间TextViews,只是为了缩短示例):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<RelativeLayout
android:id="@+id/footer"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:background="#ff999999"
android:layout_alignParentBottom="true"
>
<Button
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next"
android:layout_marginTop="2dip" />
</RelativeLayout>
<ScrollView
android:id="@+id/ScrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="2dip"
android:layout_above="@id/footer"
android:layout_alignParentTop="true"
>
<RelativeLayout
android:id="@+id/layoutR"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
//XML removed for ease of viewing
</RelativeLayout>
</ScrollView>
</RelativeLayout>
基本上,将整个事物放入RelativeLayout设置为fill_parent
。首先定义页脚(使用“下一步”按钮),然后将其对齐到右下角。接下来,将ScrollView设置为fill_parent
,并在页脚上方对齐(这将使ScrollView在页脚定义后填充所有可用空间)。当然,将所有TextView和EditTexts等放回到RelativeLayout中。我现在无法对此进行测试,但它应该让你相当接近。
答案 1 :(得分:1)
使用两种不同的布局,一种用于纵向,一种用于横向。
就像您的工作区中有一个布局文件夹一样。创建一个layout-land文件夹,将xml复制到具有相同名称的新文件夹中,并修改它以查看您希望的方式。 换句话说,如果你的xml被称为main.xml,你将在布局中有一个main.xml,在layout-land中有一个。
Android足够聪明,可以根据方向选择合适的布局。