A partir del nivel API 11 setDividerDrawable()
y setShowDividers()
se introdujo en LinearLayout
, lo que permite que el diseño lineal muestre divisores entre elementos secundarios. Realmente me gustaría usar esta característica, pero también estoy apuntando a dispositivos antes de Honeycomb (nivel API < 11).LinearLayout con separadores en pre Honeycomb
Una forma de solucionar esto es extender LinearLayout y agregar el divisor manualmente. Se trata de un prototipo:
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
public class DividerLinearLayout extends LinearLayout
{
public DividerLinearLayout(Context context)
{
super(context);
}
public DividerLinearLayout(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public DividerLinearLayout(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
@Override
public void addView(View child)
{
if(super.getChildCount() > 0)
{
super.addView(LayoutInflater.from(getContext()).inflate(R.layout.divider, null));
}
super.addView(child);
}
}
Sin embargo, el uso de este tipo de implementación va a cambiar el comportamiento de los clientes interactuando sobre los niños. Algunos puntos de vista serán los insertados por el cliente mismo, algunos serán insertados por el DividerLinearLayout
. También ocurrirán problemas si el usuario está insertando vistas en índices especificados. Uno podría implementar una conversión de índices, pero esto podría conducir a errores desagradables si se hace mal. Además, creo que se deben ignorar muchos más métodos.
¿Hay alguna forma mejor de resolver el problema? ¿Alguien ya ha desarrollado un equivalente de uso gratuito DividerLinearLayout
? No parece existir en las bibliotecas de compatibilidad para Android.
Ya estoy usando ActionBarSherlock, por lo que 'IcsLinearLayout' es un reemplazo fácil. Funciona como un amuleto, gracias por señalarlo. – foens
¡Dulce! :) Ahora sé que funciona con seguridad;) – dmon
parece que tiene errores cuando se usa en xml. Además, el enlace que proporcionó ya no funciona. –