Ich füge einem vertikalen LinearLayout programmgesteuert benutzerdefinierte Ansichten hinzu, und ich möchte, dass zwischen den Ansichten ein gewisser Abstand vorhanden ist. Ich habe versucht, meinem CustomView-Konstruktor Folgendes hinzuzufügen: setPadding (0, 1, 0, 1), aber dies scheint keine Auswirkungen zu haben. Irgendein Rat?
* Es wurde darauf hingewiesen, dass ich Ränder verwenden sollte. Da ich dynamisch Ansichten hinzufüge, muss ich die Ränder aus dem Code festlegen (nicht in XML). Ich glaube, der Weg dazu ist unten, aber es funktioniert nicht.
public class MyView extends View
{
public MyView (Context context)
{
super(context);
MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 10, 0, 10);
setLayoutParams(params);
*Bearbeiten. Ich habe auch versucht, MarginLayoutParams als Parameter zu verwenden, während ich die Ansichten zum linearen Layout hinzufügte (siehe unten). Das hat auch nicht funktioniert:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);
Antworten:
Sie sollten
android:layout_margin<Side>
auf die Kinder. Die Polsterung ist intern.quelle
Die API> = 11 Lösung:
Sie können die Polsterung in den Teiler integrieren. Wenn Sie keine verwendet haben, erstellen Sie einfach ein großes leeres Zeichenobjekt und legen Sie es als
LinearLayout
Teiler fest:empty_tall_divider.xml:
quelle
GONE
. Wennandroid:showDividers="middle"
Sie angeben, erhalten Sie nur den Platz, an dem Sie ihn tatsächlich benötigen.Android unterstützt jetzt das Hinzufügen einer Leerzeichenansicht zwischen Ansichten. Es ist ab 4.0 ICS verfügbar.
quelle
Das folgende Beispiel macht genau das, was Sie programmatisch benötigen. Ich habe eine feste Größe von (140.398) verwendet.
quelle
Seit API Level 14 können Sie einfach einen (transparenten) Zeichner hinzufügen, der gezeichnet werden kann:
und es wird den Rest für Sie erledigen!
quelle
8dp
Woher kam das?Verwenden Sie
LinearLayout.LayoutParams
anstelle vonMarginLayoutParams
. Hier ist die Dokumentation.quelle
LinearLayout.LayoutParams
erweitertMarginLayoutParams
und erbt die gleichesetMargins()
Methode, die Sie oben verwendet haben ...Wenn Sie ActionBarSherlock verwenden , können Sie com.actionbarsherlock.internal.widget.IcsLinearLayout verwenden:
quelle
Verwenden der Polsterung im Layout der untergeordneten Ansicht.
layout.xml
backage_text.xml
quelle
Sie können das
LayoutParams
übergeordneteLinearLayout
Element abrufen und auf folgende Weise auf die einzelnen Ansichten anwenden:quelle
Versuchen Sie, das Space- Widget hinzuzufügen, nachdem Sie die Ansicht wie folgt hinzugefügt haben:
quelle
Eine einfache Möglichkeit, dies dynamisch zu tun, besteht darin , den Kindern Polster hinzuzufügen . Sie können es einfach mit .setPadding () für das hinzuzufügende Objekt festlegen. In diesem Beispiel wird einem LinearLayout eine ImageView hinzugefügt:
Das folgende Bild zeigt zwei ImageViews, die mit Auffüllung hinzugefügt wurden:
quelle
Wenn Ihr Layout Beschriftungen oder einen Textcontainer enthält. Sie können am Ende jedes Textes "\ n" hinzufügen , um eine Linie zu teilen und Platz zwischen den Elementen zu schaffen.
Beispiel:
quelle