2012-05-15 21 views
13

Ho una visione con alcuni campi (nome, e-mail, la password, il pulsante Register):come rendere scorrevole una vista Android quando appare la tastiera?

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

Quando mi concentro un campo EditText, viene visualizzata la tastiera e viene sovrapponendo i campi inferiori sulla vista. Quindi non posso vederli quando la tastiera è presente. Mi piacerebbe sapere come rendere scorrevole la vista in modo da poter vedere i campi inferiori. E in aggiunta, come far scorrere automaticamente la vista per rendere visibile il campo focalizzato.

risposta

37

è necessario includere l'attributo android:windowSoftInputMode="adjustResize" per la vostra attività nel file AndroidManifest.xml - e quindi Android dovrebbe fare il ridimensionamento automaticamente per voi:

<activity android:name="..." 
      ... 
      android:windowSoftInputMode="adjustResize"> 
    ... 
/> 
+1

In realtà era impostato su "adjustPan | adjustResize". Rimozione di adjustPan ha funzionato. Grazie! – Alexis

0

Hai provato questo:

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

6

Ho creato un semplice file xml, spero che questo sia quello che stai cercando.

passaggio 1. è possibile scorrere quando viene visualizzato il tastierino.

passaggio 2. quando si fa clic su Campo di testo, verrà visualizzato Focus/sopra la tastiera.

<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> 
+0

Stavo avendo un problema con una scrollview e fillViewport è proprio quello di cui avevo bisogno. – AlexBrand

0

Nel mio caso, @Aleks G soluzione non funzionava. così ho risolto il mio problema con

<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> 
Problemi correlati