web-dev-qa-db-ger.com

Android: ScrollView scrollt nicht bei ausgeschalteter Tastatur

Ich habe ein Layout mit einigen Ansichten, von denen eine EditText ist. Das Layout passt problemlos auf eine Seite, ABER, wenn die Soft-Tastatur deaktiviert ist, scrollt das Layout nicht. Hier ist eine Zusammenfassung meines Layouts:

<?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>

Und in meinem Manifest habe ich das Attribut erklärt:

Android:windowSoftInputMode="adjustResize|stateHidden"

Weiß jemand, warum es nicht funktioniert und wie man sicherstellt, dass es funktioniert?

Danke im Voraus!

36
Xander

Okay, anscheinend darf der Android:layout_height der ScrollView nicht auf wrap_content gesetzt sein. Ich habe es auf match_parent gesetzt und den Android:layout_above auf die Schaltfläche am unteren Rand der Seite.

Fragen Sie mich nicht warum, aber das Problem wurde behoben.

32
Xander

Ich hatte das gleiche Problem und überprüfte meine Aktivität im Manifest. Der Grund, warum es nicht funktionierte, ist, dass ich diese Eigenschaft nicht verwendet habe: 

Android:windowSoftInputMode="adjustResize"

Jetzt funktioniert es hervorragend und es müssen keine zusätzlichen Anker gemacht werden.

44
Ciprian

In meinem Fall funktionierte nichts davon.

Ich hatte item name="Android:windowTranslucentStatus">true</item> in meinem Thema. Es wurde behoben, indem Android:fitsSystemWindows="true" im übergeordneten Layout festgelegt wurde, wo sich meine Bildlaufansicht befindet.

13
giorgos29cm

Fügen Sie Android:windowSoftInputMode="stateHidden|adjustResize" zu Ihrem Tag in der Datei AndroidManifest.xml hinzu. Dies bewirkt, dass die Bildschirmgröße nach dem Anzeigen der Soft-Tastatur nach links über dem Leerzeichen geändert wird. So können Sie problemlos scrollen.

10
Rajesh Hegde

Versuchen Sie, ScrollView als übergeordnetes Layout festzulegen. Es funktioniert wie ein Zauber für mich!

0

Mein Problem war mit einer HorizontalScrollView. In meinem Fall musste ich HorizontalScrollView auf Folgendes einstellen:

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

Und entferne:

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

In der AndroidManifest.xml ist die Aktivität auf Folgendes eingestellt:

Android:windowSoftInputMode=""

Ich hoffe, das hilft jedem, der durch diesen seltsamen Fehler kommt.

0
gtsouk

In meinem Fall funktioniert eine der obigen Lösungen erst, wenn ich ENTFERNE

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

in meiner Aktivität verwende ich diesen Code, um eine Vollbildanzeige zu erhalten. Versuchen Sie in bestimmten Fällen möglicherweise, alle Einstellungen für den Vollbildmodus zu entfernen, damit die oben genannte Lösung funktioniert.

0