it-swarm.com.de

Wie füge ich einem vertikalen LinearLayout einen (vertikalen) Teiler hinzu?

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

Dies 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>
80
Ahmed-Anas

verwenden Sie dies für den horizontalen Teiler

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

und dies 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 verwenden möchten, verwenden Sie anstelle von Android:height="1dp" in der Form Android:width="1dp".

Tipp: Vergessen Sie nicht den Android:showDividers-Eintrag.

193
Kapil Vats

Versuchen Sie dies, erstellen Sie einen Teiler im Ordner res/drawable:

vertical_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 verwenden Sie das 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. 

65
Shreesha S

Es ist einfach, dem Layout einen Teiler 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>

Code oben machen vertikalen Teiler für LinearLayout

33
khaintt

Update: Pre-Honeycomb mit AppCompat

Wenn Sie die AppCompat-Bibliothek v7 verwenden, können Sie die LinearLayoutCompat-Ansicht verwenden. Mit diesem Ansatz können Sie unter Android 2.1, 2.2 und 2.3 Zeichensätze 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">

drawable/divider.xml: (Teiler mit etwas Füllung 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 wichtiger Hinweis: Die LinearLayoutCompat-Ansicht erweitert LinearLayout nicht und daher sollten Sie nicht die Android:showDividers- oder Android:divider-Eigenschaften verwenden, sondern die benutzerdefinierten: app:showDividers und app:divider. Im Code sollten Sie auch den LinearLayoutCompat.LayoutParams verwenden, nicht den LinearLayout.LayoutParams!

15
Rolf ツ

Ich bin heute gerade auf das gleiche Problem gestoßen. Wie die vorherigen Antworten zeigen, ist das Problem eher auf die Verwendung einer Farbe im Divider-Tag als auf ein Drawable zurückzuführen. Anstatt jedoch mein eigenes XML zu zeichnen, verwende ich lieber themenbezogene Attribute als möglich. Sie können Android: attr/dividerHorizontal und Android: attr/dividerVertical verwenden, um stattdessen ein vordefiniertes Zeichenelement 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 Eigenschaft dividerPadding KEINE zusätzliche Auffüllung auf beiden Seiten eines vertikalen Teilers hinzu, wie man annehmen könnte. Stattdessen wird das Auffüllen von oben und unten definiert und der Teiler kann daher abgeschnitten werden, wenn er zu groß ist.

Frustrierend müssen Sie die Anzeige der Teiler aus dem Code in Ihrer Aktivität aktivieren. Zum Beispiel:

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
dougc

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
Amilcar Andrade

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

1
bocekm

Wenn die Antwort von Kapil Vats nicht funktioniert, versuchen Sie Folgendes:

drawable/divider_horizontal_green_22.xml

    <size Android:width="22dip"/>
    <solid Android:color="#00ff00"/>

</shape>

layout/your_layout.xml

LinearLayout 
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:id="@+id/llTopBar"
            Android:orientation="horizontal"
            Android:divider="@drawable/divider_horizontal_green_22"
            Android:showDividers="middle"
           >

Ich bin auf ein Problem gestoßen, bei dem das Füllattribut nicht funktionierte. Daher musste ich die Höhe des Teilers direkt im Teiler einstellen.

Hinweis:

Wenn Sie es in vertikalem LinearLayout verwenden möchten, erstellen Sie ein neues, wie folgt: drawable/divider_vertical_green_22.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
        xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <size Android:height="22dip"/>
    <solid Android:color="#00ff00"/>

</shape>
0
Ionut Negru

Um gezeichnet zu werden, muss der Teiler von LinearLayout eine gewisse Höhe haben, während ColorDrawable (was im Wesentlichen #00ff00 sowie jede andere hartcodierte Farbe ist) nicht hat. Ein einfacher (und korrekter) Weg, dies zu lösen, besteht darin, Ihre Farbe in eine Drawable mit vordefinierter Höhe einzuhüllen, wie shape drawable

0
Dmitry Zaytsev

Sie können IcsLinearLayout wie in der ActionBarSherlock-Bibliothek verwendet verwenden oder die normale API verwenden, die unter ICS verfügbar ist (oder ihren Code kopieren).

BEARBEITEN: Sie können LinearLayoutICS auch in der Support-Bibliothek verwenden. Ich habe einen Beitrag darüber geschrieben hier .

Sie können dieselbe Zeichnung verwenden, um das Zeichenobjekt wie gezeigt zu erstellen: hier oder ein Zeichenbild mit 9 Patches.

0

Sie müssen eine beliebige Ansicht für eine separate Ansicht wie Textansicht oder Bildansicht erstellen und dann den Hintergrund dafür festlegen, wenn Sie ein anderes Bild als Hintergrund verwenden. 

Hoffe das hilft dir. 

0
itsrajesh4uguys