Android Scrollview dans RelativeLayout avec ButtonBar

Je suis en train de mettre en œuvre une vue login où plusieurs EditTexts et un logo sont affichées sur l'écran avec un ButtonBar au fond, quelque chose comme ceci:

le texte d'alt http://russellhaering.com/media/addAccount.png

Le problème est que sur de très petits écrans, surtout quand ils sont en rotation sur le côté, l'ensemble de la vue principale ne tient pas sur l'écran.

J'ai actuellement

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#234C59"  >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingTop="5dip"
        android:paddingLeft="15dip"
        android:paddingRight="15dip"
        android:orientation="vertical" >
        <ImageView
            android:id="@+id/logo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitCenter"
            android:layout_centerHorizontal="true"
            android:src="@drawable/logo" />
        <EditText
            android:id="@+id/input_email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:inputType="textEmailAddress"
            android:singleLine="true"
            android:hint="Username or email" />
        <EditText
            android:id="@+id/input_password"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop=""
            android:inputType="textPassword"
            android:singleLine="true"
            android:hint="Password" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/buttonbar_login"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        style="@android:style/ButtonBar" >
        <Button
            android:id="@+id/button_signup"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Sign Up" />
        <Button
            android:id="@+id/button_login"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Log In" />
    </LinearLayout>
</RelativeLayout>

J'ai essayé de l'encapsulation de la première LinnearLayout dans un ScrollView qui ressemble à ceci:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
            <!-- Linear Layout Here -->
</ScrollView>

Mais qui présente deux problèmes:

  1. La ScrollView ne pas défiler, même sur des écrans où les données ne rentrent pas tous
  2. La ButtonBar flotte sur le clavier à l'écran, brouillant encore plus de l'écran lorsque le clavier apparaît.

Tout fonctionnait très bien quand j'ai eu des boutons à l'intérieur de la ScrollView, mais maintenant que je les ai dans la ButtonBar je vais avoir beaucoup de mal à comprendre cela.

OriginalL'auteur russell_h | 2010-08-03