28

Ho un layout con alcune viste, da cui uno è un EditText. Il layout si adatta facilmente su una pagina, MA, quando la tastiera software è disattivata, il layout non scorre. Ecco un riassunto di mio layout:Android: ScrollView non scorre con la tastiera fuori

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

E nel mio manifesto ho dichiarato l'attributo:

android:windowSoftInputMode="adjustResize|stateHidden" 

Qualcuno sa il motivo per cui non funziona e come per assicurarsi che funziona?

Grazie in anticipo!

+1

per Android 5, controlla questo post correlato: [Android: regola scrollview quando la tastiera è attiva per Android 5.0 (lollipop)] (http://stackoverflow.com/questions/27167176/android-adjust-scrollview-when- keyboard-is-up-per-android-5-0-lollipop) –

risposta

28

Ok, apparentemente lo ScrollView android:layout_height non deve essere impostato su wrap_content. L'ho impostato su match_parent e impostato il android:layout_above sul pulsante nella parte inferiore della pagina.

Non chiedermi il motivo, ma questo ha risolto il problema.

+0

'layout_above' cosa? –

+5

'layout_above' Qualunque sia la vista che si desidera fissare sul fondo dello schermo – Xander

+1

Sei un risparmiatore di vita :) – letronje

35

Ho avuto lo stesso problema e ho controllato la mia attività nel manifesto, e il motivo per cui non funzionava è perché non ho usato questa proprietà:

android:windowSoftInputMode="adjustResize" 

Ora funziona benissimo e non bisogno di fare ancoraggi aggiuntivi.

9

Aggiungi android:windowSoftInputMode="stateHidden|adjustResize" al tag nel file AndroidManifest.xml. Ciò causerà il ridimensionamento dello schermo nello spazio sinistro dopo la visualizzazione della tastiera virtuale. Quindi, sarete in grado di scorrere facilmente.

+1

Ottimo, ha funzionato perfettamente per me (y) – Rifinio

0

Il mio problema era con HorizontalScrollView. Nel mio caso ho dovuto impostare HorizontalScrollView a:

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

E rimuovere:

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

Nel AndroidManifest.xml l'attività è impostata su:

android:windowSoftInputMode="" 

Spero che questo aiuta a chiunque arrivare attraverso questo strano bug.

0

Provare a impostare ScrollView come layout principale. Funziona come un fascino per me!

5

Nel mio caso, nulla di quanto sopra ha funzionato.

Avevo item name="android:windowTranslucentStatus">true</item> nel mio tema. Ed è stato risolto impostando android:fitsSystemWindows="true" nel layout principale in cui si trova la mia scrollview.