web-dev-qa-db-fra.com

Android: ScrollView ne défile pas avec la sortie clavier

J'ai une mise en page avec quelques vues, dont l'une est un EditText. La mise en page s'adapte facilement à une page, MAIS, quand le clavier logiciel est sorti, la mise en page ne défile pas .

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@drawable/background" >

    <ScrollView
        Android:id="@+id/ScrollView1"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true" >

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="vertical" >

            <CheckBox/>

            <TextView/>

            <LinearLayout>
                <EditText>
                    <requestFocus />
                </EditText>
            </LinearLayout>

            <TextView/>

            <LinearLayout>
                <Spinner/>
            </LinearLayout>

        </LinearLayout>

    </ScrollView>

    <Button
        Android:layout_alignParentBottom="true" />

</RelativeLayout>

Et dans mon manifeste, j'ai déclaré l'attribut:

Android:windowSoftInputMode="adjustResize|stateHidden"

Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas et comment s'assurer que cela fonctionne?

Merci d'avance!

36
Xander

Ok, apparemment, le Android:layout_height du ScrollView ne doit pas être défini sur wrap_content. Je le règle sur match_parent et le Android:layout_above sur le bouton en bas de la page.

Ne me demandez pas pourquoi, mais cela a résolu le problème.

32
Xander

J'ai eu le même problème et j'ai vérifié mon activité dans le manifeste. La raison pour laquelle cela ne fonctionnait pas, c'est parce que je n'ai pas utilisé cette propriété: 

Android:windowSoftInputMode="adjustResize"

Maintenant, cela fonctionne très bien et pas besoin de faire des ancres supplémentaires.

44
Ciprian

Dans mon cas, rien de ce qui précède n'a fonctionné.

J'ai eu item name="Android:windowTranslucentStatus">true</item> dans mon thème. Et cela a été corrigé en définissant Android:fitsSystemWindows="true" dans la disposition parente où se trouve scrollview.

13
giorgos29cm

Ajoutez Android:windowSoftInputMode="stateHidden|adjustResize" à votre balise dans le fichier AndroidManifest.xml. Cela entraînera le redimensionnement de l'écran vers la gauche après l'affichage du clavier virtuel. Ainsi, vous pourrez faire défiler facilement.

10
Rajesh Hegde

Essayez de définir ScrollView en tant que disposition parent. Cela fonctionne comme un charme pour moi!

0
Martino Christanto

Mon problème était avec un HorizontalScrollView. Dans mon cas, je devais définir HorizontalScrollView sur:

Android:layout_width="match_parent"
Android:layout_height="match_parent"

Et retirez:

 Android:layout_above="@+id/closeButton"
 Android:layout_below="@+id/logo"

Dans le fichier AndroidManifest.xml, l'activité est définie sur:

Android:windowSoftInputMode=""

J'espère que cela aide tous ceux qui rencontrent ce bogue étrange.

0
gtsouk