28

Ich habe ein Layout mit einigen Ansichten, von denen eine ist ein EditText. Das Layout passt leicht auf eine Seite, ABER, wenn die Soft-Tastatur aus ist, scrollt das Layout nicht. Hier ist eine kurze Zusammenfassung meiner Layout:Android: ScrollView scrollt nicht mit Tastatur

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

android:windowSoftInputMode="adjustResize|stateHidden" 

Weiß jemand, warum es nicht funktioniert und wie Sie sicherstellen, funktioniert es?

Vielen Dank im Voraus!

+1

für Android 5, lesen Sie diesen verwandten Artikel: [Android - scrollview anpassen, wenn die Tastatur für Android 5.0 (Lollipop) ist] (http://stackoverflow.com/questions/27167176/android-adjust-scrollview-when- Tastatur-ist-für-Android-5-0-Lollipop) –

Antwort

28

Okay, die android:layout_height von ScrollView darf nicht auf wrap_content eingestellt sein. Ich setze es auf match_parent und setze die android:layout_above auf die Schaltfläche am unteren Rand der Seite.

Frag mich nicht warum, aber das behob das Problem.

+0

'Layout_oben 'was? –

+5

'layout_above' was auch immer für eine Ansicht, die auf dem Bildschirm angezeigt werden soll – Xander

+1

Sie sind ein Lebensretter :) – letronje

35

Ich hatte das gleiche Problem, und ich habe meine Tätigkeit im Manifest, und der Grund, warum es nicht funktioniert, weil ich nicht mit dieser Eigenschaft hat:

android:windowSoftInputMode="adjustResize" 

Jetzt toll es funktioniert und keine müssen zusätzliche Anker machen.

9

Fügen Sie android:windowSoftInputMode="stateHidden|adjustResize" zu Ihrem Tag in der Datei AndroidManifest.xml hinzu. Dies führt dazu, dass die Größe des Bildschirms nach der Anzeige der Soft-Tastatur im linken Bereich geändert wird. So können Sie leicht scrollen.

+1

Großartig, es hat perfekt für mich funktioniert (y) – Rifinio

0

Mein Problem war mit einem HorizontalScrollView. In meinem Fall hatte ich HorizontalScrollView zu setzen:

android:layout_width="match_parent" 
android:layout_height="match_parent" 

Und entfernen:

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

Im AndroidManifest.xml die Aktivität auf:

android:windowSoftInputMode="" 

Ich hoffe, das hilft niemandem über diesen komischen Bug kommen.

0

Versuchen Sie, ScrollView als übergeordnetes Layout festzulegen. Es wirkt wie Charme für mich!

5

In meinem Fall funktionierte nichts von dem oben Gesagten.

Ich hatte item name="android:windowTranslucentStatus">true</item> in meinem Thema. Und es wurde behoben, indem android:fitsSystemWindows="true" im übergeordneten Layout, wo ist meine scrollview festgelegt ist.

Verwandte Themen