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…
- Android, LinearLayout no se desplaza
- Cómo agregar dos listview en scrollview
- Cómo agregar ScrollView a GLSurfaceview en Opengl ES2.0 en Android
- Barra de desplazamiento en android
- ScrollView no está jugando bien con RelativeLayout
<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?
- Cómo agregar scrollview a keyboardView en android
- ¿Cómo usar ScrollView en Android?
- Android - varias vistas de desplazamiento verticales en scrollview horizontal
- RelativeLayout con scrollview no desplazamiento
- Las filas ListView de Android en ScrollView no se muestran completamente - recortadas
- ¿Cómo puedo mostrar mi diseño de desplazamiento por encima del teclado?
- Cómo puedo crear un diseño nestedScroll como este?
- Cambiar el color de desplazamiento en scrollview en android
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
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
- Menú emergente de Android con iconos (similar a la aplicación de Google Map versión 6)
- Android: ArrayList Mover el elemento a la posición 0