android scrollView not aligning in screen Landscape View – Education Career Blog

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.

Leave a Comment