I am having a problem in ScrollView. When i run my application on X10i it works fine but when i change the view to landscape half of the layout at the bottom (RelativeLayout) go down to the screen. Here is my Layout code. please suggest a general solution that will be applicable to all phones not only 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>
That's a lot of XML. O_o
Creating two separate layouts really shouldn't be necessary to fix the problem you're having. Here is what I would suggest (I'm cutting out the intermediate TextViews, just to shorten the example):
<?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>
Basically, putting the whole thing into a RelativeLayout set to fill_parent
. Define your footer (with the "Next" button) first, and align it to the bottom right. Next, define your ScrollView set to fill_parent
as well, and aligned above your footer (this will make the ScrollView fill all available space remaining after the footer is defined). And of course, place all your TextViews and EditTexts, etc., back into that RelativeLayout. I'm not able to test this right now, but it should get you fairly close.
Use two diferent layouts, one for portrait and one for landscape.
Just like you have a layout folder in your workspace. Create a layout-land folder, copy the xml into that new folder with the same name, and modify it to look how you want it to. In other words, if your xml is called main.xml, you will have one main.xml in layout and one in layout-land.
Android will be smart enough to choose the apropiate layout based on the orientation.
精彩评论