Da livello API 11 setDividerDrawable()
e setShowDividers()
è stato introdotto su LinearLayout
, consentendo al layout lineare di mostrare divisori tra elementi figlio. Mi piacerebbe davvero utilizzare questa funzione, ma sto anche prendendo di mira i dispositivi prima di Honeycomb (livello API < 11).LinearLayout con divisori su pre Honeycomb
Un modo per risolvere questo problema è estendere LinearLayout e aggiungere il divisore manualmente. Si tratta di 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);
}
}
Tuttavia, utilizzando tale attuazione cambierà il comportamento di eventuali clienti iterare sui figli. Alcuni punti di vista saranno quelli inseriti dal cliente stesso, alcuni saranno inseriti dallo DividerLinearLayout
. I problemi si verificano anche se l'utente sta inserendo viste negli indici specificati. Si potrebbe implementare una conversione di indici, ma questo potrebbe portare a errori brutti se fatto male. Inoltre, penso che molti più metodi debbano essere sovrascritti.
Esiste un modo migliore per risolvere il problema? Qualcuno ha già sviluppato un equivalente DividerLinearLayout
liberamente utilizzabile? Non sembra esistere nelle librerie di compatibilità per Android.
Sto già utilizzando ActionBarSherlock, quindi 'IcsLinearLayout' è stato un facile rimpiazzo. Funziona come un incantesimo - grazie per averlo indicato. – foens
Dolce! :) Ora so che funziona di sicuro;) – dmon
sembra che abbia errori quando viene utilizzato in xml. inoltre, il link che hai fornito non funziona più. –