ImageView no llenará el padre

Tengo un ScrollView en una de mis pantallas. Quiero que el borde derecho tenga una sombra. Decidí que la manera más fácil de hacer esto era hacer que el niño de ScrollView fuera un RelativeLayout, y tener dos hijos de RelativeLayout – uno que es LinearLayout que alojará el diseño de la pantalla y la segunda Vista que es la sombra.

Al igual que…

<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="none" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <!-- stuff --> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/shadow" android:layout_alignParentRight="true" /> </RelativeLayout> </ScrollView> 

Desafortunadamente, esto no funciona. ImageView está obligando a que sus dimensiones sean el tamaño del archivo de imagen. No se estira verticalmente para ser la altura de RelativeLayout. También he intentado "match_parent" sin éxito. La imagen es un 9-patch.

¿Ideas?

La aplicación de contenido extraíble como fuente de un ImageView conlleva un requisito inherente que desea que la vista haga lo que pueda para acomodar el contenido sin modificar el contenido en sí mismo. Normalmente, este es el comportamiento que desea salir de un ImageView .

Lo que realmente quieres es el comportamiento que obtienes definiendo contenido como background de una vista, para el que realmente no necesitas ImageView . Un fondo está diseñado simplemente estirar, rellenar, etc. a cualquier tamaño de la vista. Además, ya que está utilizando RelativeLayout , puede indicar a la vista que coincida con el límite de la vista que está sombreando agregando un id y algunos parámetros de layout_align adicionales.

  <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/content_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <!-- stuff --> </LinearLayout> <View android:layout_width="11dp" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:layout_alignTop="@id/content_layout" android:layout_alignBottom="@id/content_layout" android:background="@drawable/shadow" /> </RelativeLayout> 

prueba esto

 <ImageView android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="@drawable/ic_launcher" android:scaleType="fitXY" android:layout_alignParentRight="true" /> 

Aquí es lo que obtengo

Introduzca aquí la descripción de la imagen

Y código id

 <?xml version="1.0" encoding="utf-8"?> 

 <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:scrollbars="none" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <!-- stuff --> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:background="@drawable/ic_launcher" android:scaleType="fitXY" /> </RelativeLayout> </ScrollView> 

Su problema no tiene nada que ver con el ImageView o el 9-patch en sí, sino con el hecho de que está envolviendo todo en ScrollView . Un ScrollView forzará automáticamente a sus hijos directos al niño a envolver su contenido, sin importar si se lo dice a FILL_PARENT o MATCH_PARENT – ambos hacen exactamente lo mismo por cierto; La única diferencia es el nombre, que refleja mejor el comportamiento real de la bandera.

Afortunadamente, ScrollView proporciona una forma de forzarlo a llenar la ventana con una bandera, lo que hará que el comportamiento sea bastante similar a la configuración de FILL_PARENT a una vista regular. Agregue el atributo android:fillViewport o use setFillViewport() del código.

Editar: Sólo para ser claro, es necesario establecer ese indicador en el ScrollView . Además, si es el ScrollView que debe tener la sombra, ¿no puede enviar su 9 parches como fondo? Supongo que depende de lo que su imagen actual se parece. En cuanto a su comentario: sí, el RelativeLayout es flexible en términos de posicionamiento y tamaño de los niños, pero cualquier niño seguirá estando vinculado al tamaño de su padre.

Tengo la sensación de que algunos de nosotros pueden estar trabajando hacia algo diferente de lo que usted tiene en mente. Definitivamente ayudaría a aclarar las cosas con un simple dibujo.

Usted quería una sombra a la derecha de su imagen, a continuación, utilizar el diseño único con Horizontal Orientation , Es bueno que usted ha decidido utilizar Disposición relativa. Utilizar

 android:orientation="vertical" 

Dentro de este diseño, agregue esas dos imágenes. Si todavía tienes una duda, dame esas dos imágenes o muestras de imágenes, te daré el código

  • ¿Cómo habilitar Scale en Android ScrollView de una manera que no impide que se desplace y haga clic en sus elementos secundarios?
  • Android 7 WebView con wrap_content
  • Actualización de contenido de ScrollView
  • Hacer scrollbars flash de código (como iOS flashScrollIndicators)
  • MonoDroid: Error al llamar al constructor de la vista personalizada - TwoDScrollView
  • ¿Cómo sé que la vista de desplazamiento ya está desplazada hacia abajo?
  • ScrollView desplazamientos automáticos para seleccionar TextView
  • Evitar que una vista anidada en un ScrollView se desplace fuera de la pantalla
  • Ajusta scrollview cuando el teclado está hacia arriba
  • Habilitar EditarTexto desplazable dentro de ScrollView y ViewFlipper
  • Cómo obtener NUEVA anchura / altura del diseño raíz en onConfigurationChanged?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.