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>
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.
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.
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
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
!
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);
}
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">
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.
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>
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
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.
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.