Imagen androide en listview que piensa "fuera" de la caja
Quiero tener un ImageView que es parte de un elemento de línea de vista de lista, pero que aparece tanto dentro como fuera de la fila. ¿es posible? ¿si es así, cómo? Muchas gracias de antemano … alt text http://www.freeimagehosting.net/uploads/a7e703a33f.png
- No se puede recortar para imágenes grandes
- Encontrar un patrón dentro de una imagen
- Android: ¿Hay algún evento desencadenado cuando activity.setContentView ha terminado de procesar?
- Selecciona varias imágenes de la Galería fotográfica en Android con Intents
- Reconocimiento de imágenes para la aplicación Android de realidad aumentada
- Guardar vista de mapa de bits con getDrawingCache da una imagen en negro
- Galería de imágenes con una Scrollview horizontal
- Cómo crear una carpeta de imágenes de aplicaciones para mostrarla en la galería de Android
- Android - combinar deslizar y pellizcar a zoom
- Almacenamiento en caché de imágenes de Android
- Recortar imagen en android
- ¿Cómo recortar una imagen cuyo URI se conoce en Android?
- Cómo recortar la imagen en android
La respuesta es "no exactamente", al menos no explícitamente en la forma en que se quiere decir, pero debería ser capaz de hacer que su imagen aparezca fuera de la fila simplemente usando una imagen de fondo para los elementos de la lista que se parece al borde de la Lista se produce unos pocos píxeles de donde realmente lo hace. A continuación, puede alinear a la derecha el elemento que desea que aparezca sobrevolado, y agregar algunos relleno derecho / márgenes a los elementos que no lo hacen.
Tengo este trabajo ahora y no tuve que meterse con photoshop en absoluto. Lo hice todo usando xml de android.
La forma de hacerlo es usar un elemento <layer-list>
y en lugar de usar sin usar el relleno, como esto:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="6dip" android:right="6dip" android:left="6dip"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:bottomRightRadius="2dip" android:bottomLeftRadius="2dip" android:topLeftRadius="6dip" android:topRightRadius="6dip" /> <solid android:color="@color/list_view_outline" /> </shape> </item> <item android:top="8dip" android:right="8dip" android:left="8dip"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:bottomRightRadius="2dip" android:bottomLeftRadius="2dip" android:topLeftRadius="6dip" android:topRightRadius="6dip" /> <solid android:color="@android:color/white" /> <stroke android:width="1dip" android:color="#BDBDBD" /> </shape> </item>
A continuación, sólo tiene que utilizar una disposición de fila estándar para la fila de la lista:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/feed_list_row_content"> <ImageView android:id="@+id/author_image" android:layout_width="44dip" android:layout_height="44dip" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:src="@drawable/no_photo" android:layout_marginLeft="10dip" android:layout_marginTop="10dip" /> <TextView android:layout_width="wrap_content" android:layout_marginTop="10dip" android:layout_height="wrap_content" android:layout_toRightOf="@id/author_image" android:id="@+id/feed_message_content" android:layout_toLeftOf="@+id/action_button" /> <ImageView android:id="@id/action_button" android:src="@drawable/row_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginTop="20dip" />
A continuación, establezco el fondo en el método getView () del adaptador de lista personalizada como las filas superior e inferior se diferencian de las filas intermedias.
if(position == 0) { holder.contentLayout.setBackgroundResource(R.drawable.top_row); } else if(position == posts.size() - 1) { holder.contentLayout.setBackgroundResource(R.drawable.bottom_row); } else { holder.contentLayout.setBackgroundResource(R.drawable.inner_row); }
Deberías ser capaz de implementar esto usando el android:clipChildren="false"
y android:clipToPadding="false"
en la vista de padre inmediato, luego android:clipChildren="false"
en todos los grupos de vistas de antepasados y luego poner un margen negativo En la vista de imagen; Es decir, android:layout_marginLeft="-10dp"
.
Me tomó un tiempo entender cómo funcionan estos, especialmente android:clipChildren="false"
. Google dice "Define si un niño está limitado a dibujar dentro de sus límites o no.", El punto clave es que los 'límites' del niño no son los límites del grupo de vista padre, sino los límites de la vista como se define Por sus atributos de diseño, es por eso que lo necesita todo el camino hasta el árbol de antepasados.
- Encriptación básica en Android
- Android: ¿Variable vinculante y pasando para incluir trabajo de diseño de etiquetas?