J'ai une vue avec quelques champs (nom, email, mot de passe, bouton d'enregistrement):
<ScrollView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
<ViewFlipper
Android:id="@+id/viewflipper"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" >
//Layouts
</ViewFlipper>
</ScrollView>
Lorsque je focalise un champ edittext, le clavier apparaît et recouvre les champs inférieurs de la vue. Donc, je ne peux pas les voir quand le clavier est présent. Je voudrais savoir comment faire défiler la vue pour que je puisse voir les champs inférieurs. Et de plus, comment faire défiler automatiquement la vue pour rendre le champ ciblé visible.
Vous devez inclure l'attribut Android:windowSoftInputMode="adjustResize"
pour votre activité dans le fichier AndroidManifest.xml. Ensuite, Android doit redimensionner automatiquement pour vous:
<activity Android:name="..."
...
Android:windowSoftInputMode="adjustResize">
...
/>
J'ai créé un fichier XML simple, j'espère que c'est ce que vous recherchez.
étape 1 . vous pouvez faire défiler quand le clavier est apparu.
étape 2 . Lorsque vous cliquez sur le champ de texte, il apparaît sur le clavier Focus/au-dessus.
<ScrollView Android:id="@+id/ScrollView01"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fillViewport="true"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<LinearLayout
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:weightSum="1.0"
Android:layout_height="match_parent"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:id="@+id/l_layout">
<EditText
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:id="@+id/editText1"
Android:layout_marginTop="100dp">
<requestFocus></requestFocus>
</EditText>
<EditText
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:id="@+id/editText2"
Android:layout_marginTop="100dp">
</EditText>
</LinearLayout>
</ScrollView>
Dans mon cas, la solution @Aleks G ne fonctionnait pas. donc j'ai résolu mon problème avec
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
>
<ScrollView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/registration_scroll_view"
Android:layout_alignParentTop="true"
Android:layout_above="@+id/btn_register_submit"
>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:orientation="vertical">
<!--This comment will be replaced
by your focusable views-->
</LinearLayout>
</ScrollView>
<Button
Android:id="@+id/btn_register_submit"
Android:layout_width="match_parent"
Android:layout_height="50dp"
Android:layout_alignParentBottom="true"
Android:background="@drawable/form_action_button_green"
Android:gravity="center"
Android:text="@string/submit"
/>
</RelativeLayout>
Avez-vous essayé ceci:
<ScrollView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
<ViewFlipper
Android:id="@+id/viewflipper"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" >
<ScrollView
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:id="@+id/scroll_container">
//Layouts
</ScrollView>
</ViewFlipper>