Actualmente estoy trabajando en una pequeña actualización de un proyecto y tengo un problema con Relative_Layout y fill_parent en una vista de lista. Estoy tratando de insertar un divisor entre dos secciones en cada fila, al igual que el divisor en el registro de llamadas del marcador predeterminado. Revisé el código fuente de Android para ver cómo lo hacían, pero encontré un problema al replicar su solución.Android RelativeLayout fill_parent comportamiento inesperado en un ListView con alturas de filas variables
Para empezar, aquí es mi diseño elemento de la fila:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dip"
android:layout_height="fill_parent"
android:maxHeight="64dip"
android:minHeight="?android:attr/listPreferredItemHeight">
<ImageView android:id="@+id/infoimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:src="@drawable/info_icon_big"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"/>
<View android:id="@+id/divider"
android:background="@drawable/divider_vertical_dark"
android:layout_marginLeft="11dip"
android:layout_toLeftOf="@+id/infoimage"
android:layout_width="1px"
android:layout_height="fill_parent"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
android:layout_marginRight="4dip"/>
<TextView android:id="@+id/TextView01"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/ImageView01"
android:layout_toLeftOf="@+id/divider"
android:gravity="left|center_vertical"
android:layout_marginLeft="4dip"
android:layout_marginRight="4dip"/>
<ImageView android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="@drawable/bborder"
android:layout_centerVertical="true"/>
</RelativeLayout>
El problema que estoy enfrentando es que cada fila tiene una miniatura de altura variable (ImageView01). Si configuro la propiedad layout_height de RelativeLayout en fill_parent, el divisor no se escala verticalmente para llenar la fila (solo queda un punto de 1px). Si configuro layout_height en "? Android: attr/listPreferredItemHeight", el divisor llena la fila, pero las miniaturas se contraen. He depurado el método getView() del adaptador, y parece que la altura del divisor no se establece correctamente una vez que la fila tiene su altura adecuada.
Aquí está una parte del método getView():
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = inflater.inflate(R.layout.tag_list_item, parent, false);
}
El resto del método simplemente establece el texto y las imágenes apropiado para la fila.
También, crear el objeto de inflado en el constructor del adaptador con: inflater = LayoutInflater.from(context);
Me estoy perdiendo algo esencial? ¿O fill_parent simplemente no funciona con alturas dinámicas?
¡Gracias por la respuesta! Sin embargo, el divisor aún no llenará la fila verticalmente. No estoy seguro de si este comportamiento es un error o si me falta algo más. ¿Alguna otra idea? –