2010-11-21 16 views
13

Tengo un problema con la representación de un ScrollView. Básicamente, el diseño es un encabezado y pie de página fijo con una vista de desplazamiento en el medio. La idea es que cuando se activa el teclado de pantalla para el contenido EditText, la imagen se puede desplazar si la altura de la imagen es más larga que la vista del medio.Android ScrollView agrega relleno adicional en la parte superior e inferior de la vista de imagen del niño

Al probar el diseño, he descubierto que en mi teléfono Android (Xperia X10 Android 1.6) hay un montón de relleno agregado en la parte superior e inferior de ImageView.

Agradecería cualquier sugerencia sobre cómo puedo evitar que esto suceda.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <!-- Header --> 
    <RelativeLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#FFFFFF"> 
     <TextView 
      android:text="Share your photo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="left"/> 
     <Button 
      android:id="@+id/btnStack" 
      android:text="Stacks" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true"/> 
    </RelativeLayout> 
    <!-- End Header --> 


    <!-- Body --> 
    <ScrollView 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:padding="5px" 
     android:background="#CCCCCC"> 
     <ImageView 
      android:id="@+id/imgPreview" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 
    </ScrollView> 
    <!-- End Body --> 


    <!-- Footer --> 
    <RelativeLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#FFFFFF" 
     android:layout_alignParentBottom="true"> 
     <EditText 
      android:id="@+id/caption" 
      android:text="Type your caption" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/caption" 
      android:background="#CCCCCC"> 
      <Button 
       android:id="@+id/btnUpload" 
       android:text="Share" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"/> 
      <Button 
       android:id="@+id/btnCancel" 
       android:text="Cancel" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"/> 
     </LinearLayout> 

    </RelativeLayout> 
    <!-- End Footer --> 

</LinearLayout> 

Respuesta

31

He encontrado después de un poco de experimentación que la adición de la siguiente sintaxis para mi código java resolvió el problema:

imgPreview.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
    imgPreview.setAdjustViewBounds(true); 
+1

¿Alguna explicación de por qué? –

+0

Recibo este problema en RelativeLayout dentro de ScrollView. Poner adjustViewBounds en mi xml no lo está resolviendo. ¿Hay una causa para esto? Noté que el relleno añadido en la parte superior es la altura de la barra de estado y el relleno en la parte inferior tiene la misma altura que la barra de navegación –

+0

Me ayudó. Gracias. – Gereltod

9
android:fillViewport="true" 
android:fadingEdge="none" 

utilizar estas propiedades en el ScrollView.

+0

Hola, lo probé, pero ninguno pareció hacer ninguna diferencia. No estamos hablando de unos pocos píxeles. Son unos cientos. Incluso si especifico el ancho y alto de píxeles de ImageView, aún no funciona correctamente. –

+0

trabajado para mí tanx – Siddhesh

+0

¡La mejor respuesta! 'fillViewport' hace el trabajo y permite que el diseño hijo ocupe el espacio solicitado. – sud007

21

Simplemente añadiendo el siguiente atributo a su descripción ImageView XML hacer el trabajo:

android:adjustViewBounds="true" 
0

puede establecer marginTop y abajo a un número negativo para el niño como este

<HorizontalScrollView 
     android:layout_width="200dp" 
     android:layout_height="200dp" 
     android:background="#ffffff" 
     android:overScrollMode="never" 
     android:scrollbars="none"> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" 
      android:layout_marginBottom="-10dp" 
      android:layout_marginTop="-10dp"> 


    </LinearLayout> 

</HorizontalScrollView> 
Cuestiones relacionadas