Frage Wie fügt man einem horizontalen LinearLayout einen (vertikalen) Teiler hinzu?


Ich versuche, einem horizontalen linearen Layout einen Teiler hinzuzufügen, komme aber nirgendwohin. Der Teiler wird einfach nicht angezeigt. Ich bin ein totaler Neuling mit Android.

Das ist mein Layout XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/llTopBar"
        android:orientation="horizontal"
        android:divider="#00ff00"
        android:dividerPadding="22dip"
        android:showDividers="middle"
       >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="asdf" />
            <Button
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="asdf"
             />

    </LinearLayout>

</RelativeLayout>

74
2018-02-28 06:08


Ursprung


Antworten:


Verwenden Sie dies für horizontale Teiler

<View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:background="@color/honeycombish_blue" />

und das für den vertikalen Teiler

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/honeycombish_blue" />

ODER wenn Sie den LinearLayout-Teiler für den horizontalen Teiler verwenden können

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <size android:height="1dp"/>
    <solid android:color="#f6f6f6"/>
</shape>

und in LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@drawable/divider"
    android:orientation="vertical"
    android:showDividers="middle" >

Wenn Sie den vertikalen Teiler dann anstelle verwenden möchten android:height="1dp" in Form verwenden android:width="1dp"

Spitze: Vergiss nicht das android:showDividers Artikel.


181
2018-02-28 06:17



Versuchen Sie dies, erstellen Sie einen Teiler in der res/drawable Mappe:

vertikal_divider_1.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">    
    <size android:width="1dip" />
    <solid android:color="#666666" />    
</shape> 

Und benutze die divider Attribut in LinearLayout wie folgt:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:orientation="horizontal"
    android:divider="@drawable/vertical_divider_1"
    android:dividerPadding="12dip"
    android:showDividers="middle"
    android:background="#ffffff" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

Hinweis:  android:divider ist nur in Android 3.0 (API Level 11) oder höher verfügbar.


64
2018-02-28 06:24



Es ist einfach, Trennlinien zum Layout hinzuzufügen, wir brauchen keine separate Ansicht.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:divider="?android:listDivider"
    android:dividerPadding="2.5dp"
    android:orientation="horizontal"
    android:showDividers="middle"
    android:weightSum="2" ></LinearLayout>

Über dem Code machen Sie den vertikalen Teiler für LinearLayout


29
2017-10-21 06:51



Update: Pre-Honeycomb mit AppCompat

Wenn Sie die AppCompat-Bibliothek v7 verwenden, möchten Sie möglicherweise die LinearLayoutCompat Aussicht. Mit diesem Ansatz können Sie unter Android 2.1, 2.2 und 2.3 aufteilbare Teiler verwenden.

Beispielcode:

<android.support.v7.widget.LinearLayoutCompat
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:showDividers="middle"
        app:divider="@drawable/divider">

ziehbare / divider.xml: (Teiler mit etwas Polsterung oben und unten)

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:insetBottom="2dp"
        android:insetTop="2dp">
    <shape>
        <size android:width="1dp" />
        <solid android:color="#FFCCCCCC" />
    </shape>
</inset>

Sehr wichtige Anmerkung: Das LinearLayoutCompat Ansicht erstreckt sich nicht LinearLayout und deshalb solltest du das nicht benutzen android:showDividers oder android:divider Eigenschaften, aber die benutzerdefinierten: app:showDividers und app:divider. Im Code solltest du auch das verwenden LinearLayoutCompat.LayoutParams nicht der LinearLayout.LayoutParams!


15
2018-03-13 16:08



Ich bin heute auf dasselbe Problem gestoßen. Wie die vorherigen Antworten zeigen, beruht das Problem auf der Verwendung einer Farbe in dem Teiler-Tag anstelle eines Zeichens. Anstatt jedoch meine eigene ziehbare XML-Datei zu schreiben, bevorzuge ich so viele thematische Attribute wie möglich. Sie können stattdessen den Befehl android: attr / dividerHorizontal und android: attr / dividerVertical verwenden, um ein vordefiniertes Zeichen zu erhalten:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:showDividers="middle"
    android:divider="?android:attr/dividerVertical"
    android:orientation="horizontal">
    <!-- other views -->
</LinearLayout>

Die Attribute sind in API 11 und höher verfügbar.

Wie von bocekm in seiner Antwort erwähnt, fügt die dividerPadding-Eigenschaft KEINE zusätzliche Auffüllung auf beiden Seiten eines vertikalen Teilers hinzu, wie man annehmen könnte. Stattdessen definiert es das obere und untere Padding und kann daher den Teiler abschneiden, wenn er zu groß ist.


8
2018-03-31 16:55



Frustrierend müssen Sie es ermöglichen, die Teiler von Code in Ihrer Aktivität zu zeigen. Beispielsweise:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set the view to your layout
    setContentView(R.layout.yourlayout);

    // Find the LinearLayout within and enable the divider
    ((LinearLayout)v.findViewById(R.id.llTopBar)).
        setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);

}

4
2018-06-28 22:04



Sie können den eingebauten Teiler verwenden, dies funktioniert für beide Orientierungen.

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:divider="?android:attr/listDivider"
  android:orientation="horizontal"
  android:showDividers="middle">

4
2018-02-29 16:53



Ihr Teiler wird möglicherweise aufgrund einer zu großen Teilerfüllung nicht angezeigt. Sie setzen 22dip, dh der Teiler wird von oben um 22dpi und von unten um 22dip abgeschnitten. Wenn Ihre Layouthöhe kleiner oder gleich 44dip ist, ist kein Teiler sichtbar.


1
2018-05-15 16:09



Sie müssen eine beliebige Ansicht für separater wie textview oder imageview erstellen und dann den Hintergrund dafür festlegen, wenn Sie ein Bild haben, verwenden Sie andernfalls die Farbe als Hintergrund.

Hoffe das hilft dir.


0
2018-02-28 06:20