2012-05-15 24 views
13

que tienen una vista con algunos campos (nombre, correo electrónico, contraseña, botón de registro):cómo hacer una vista de Android desplazable cuando aparece el teclado?

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

Cuando me centro un campo EditarTexto, aparece el teclado y es la superposición de los campos más bajos en la vista. Entonces no puedo verlos cuando el teclado está presente. Me gustaría saber cómo hacer que la vista se pueda desplazar para que pueda ver los campos inferiores. Y, además, cómo hacer que la vista se desplace automáticamente para hacer visible el campo enfocado.

Respuesta

37

Es necesario incluir android:windowSoftInputMode="adjustResize" atributo para su actividad en el archivo AndroidManifest.xml - Android y luego debe hacer el cambio de tamaño de forma automática:

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

En realidad se configuró en "adjustPan | adjustResize". Quitar el ajustePan lo hizo funcionar. ¡Gracias! – Alexis

0

Has probado esto:

<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

He creado un archivo xml simple, espero que esto es lo que estás buscando.

paso 1. puede desplazarse cuando aparece el teclado numérico.

paso 2. cuando haces clic en Campo de texto, aparecerá el teclado de Enfoque/arriba.

<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

Estaba teniendo un problema con una vista de desplazamiento y fillViewport es justo lo que necesitaba. – AlexBrand

0

En mi caso, @Aleks G solution was not working. así que resolví mi 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> 
Cuestiones relacionadas