Von API-Ebene 11 setDividerDrawable()
und setShowDividers()
wurde auf LinearLayout
eingeführt, wodurch das lineare Layout Teiler zwischen untergeordneten Elementen angezeigt werden kann. Ich würde diese Funktion gerne nutzen, aber ich ziele auch auf Geräte vor Honeycomb (API-Level < 11).LinearLayout mit Teilern auf Vorwabe
Eine Möglichkeit, dies zu beheben, besteht darin, LinearLayout zu erweitern und den Teiler manuell hinzuzufügen. Dies ist ein Prototyp:
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);
}
}
jedoch eine solche Implementierung verwendet, wird das Verhalten aller Kunden über die Kinder Iterieren ändern. Einige Ansichten werden vom Client selbst eingefügt, einige werden von der DividerLinearLayout
eingefügt. Probleme treten auch auf, wenn der Benutzer Ansichten bei bestimmten Indizes einfügt. Man könnte eine Konvertierung von Indizes implementieren, aber dies könnte zu fiesen Fehlern führen, wenn sie falsch ausgeführt werden. Außerdem denke ich, dass viel mehr Methoden außer Kraft gesetzt werden müssen.
Gibt es einen besseren Weg, das Problem zu lösen? Hat jemand schon ein frei verwendbares DividerLinearLayout
Äquivalent entwickelt? Es scheint nicht in den Kompatibilitätsbibliotheken für Android zu existieren.
Ich benutze bereits ActionBarSherlock, daher war 'IcsLinearLayout' ein einfacher Drop-In-Ersatz. Es wirkt wie ein Zauber - danke, dass Sie darauf hingewiesen haben. – foens
Süß! :) Jetzt weiß ich, es funktioniert sicher;) – dmon
scheint wie es Fehler hat, wenn es in Xml verwendet wird. Außerdem funktioniert der von Ihnen angegebene Link nicht mehr. –