android scrollView在屏幕上没有对齐Landscape View

时间:2010-10-19 15:45:47

标签: android android-widget

我在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>

2 个答案:

答案 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足够聪明,可以根据方向选择合适的布局。