it-swarm.com.de

Android Trennlinie im Layout zeichnen?

Ich möchte eine Linie genau in der Mitte eines Layouts zeichnen und sie als Trennzeichen für andere Elemente wie TextView verwenden. Gibt es ein gutes Widget dafür. Ich möchte eigentlich kein Bild verwenden, da es schwierig wäre, die anderen Komponenten darauf abzustimmen. Und ich möchte, dass es auch relativ positioniert ist. Vielen Dank

684
Androider

Normalerweise benutze ich diesen Code, um eine horizontale Linie hinzuzufügen:

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

Um ein vertikales Trennzeichen hinzuzufügen, wechseln Sie die Werte layout_width und layout_height

1620
Alex Kucherenko

Verbesserung der Antworten von Alex Kucherenko und Dan Dar

Ich habe dies zu meinen Styles hinzugefügt:

<style name="Divider">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">1dp</item>
    <item name="Android:background">?android:attr/listDivider</item>
</style>

Dann ist in meinen Layouts weniger Code und einfacher zu lesen.

<View style="@style/Divider"/>
578
toddles_fp

Fügen Sie dies in Ihr Layout ein, wo Sie den Teiler haben möchten (passen Sie die Attribute an Ihre Bedürfnisse an):

<ImageView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:src="@Android:drawable/divider_horizontal_dark"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:scaleType="fitXY"
    Android:paddingLeft="5dp"
    Android:paddingRight="5dp"
    Android:paddingBottom="2dp"
    Android:paddingTop="2dp" />
133

Sie können dies in LinearLayout verwenden:

Android:divider="?android:dividerHorizontal"
Android:showDividers="middle"

Zum Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:divider="?android:dividerHorizontal"
    Android:showDividers="middle"
    Android:orientation="vertical" >            

        <TextView 
         Android:layout_height="wrap_content"
         Android:layout_width="wrap_content"
         Android:text="abcd gttff hthjj ssrt guj"/>

        <TextView 
        Android:layout_height="wrap_content"
        Android:layout_width="wrap_content"
        Android:text="abcd"/>
        <TextView 
        Android:layout_height="wrap_content"
        Android:layout_width="wrap_content"
        Android:text="abcd gttff hthjj ssrt guj"/>

        <TextView 
        Android:layout_height="wrap_content"
        Android:layout_width="wrap_content"
        Android:text="abcd"/>

</LinearLayout>
85
user2240225
<TextView
    Android:id="@+id/line"
    style="?android:attr/listSeparatorTextViewStyle"
    Android:paddingTop="5dip"
    Android:gravity="center_horizontal"
    Android:layout_below="@+id/connect_help"
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    Android:background="#000" />
54
pprados

benutze diesen Code. Es wird helfen

<LinearLayout
    Android:layout_width="0dip"
    Android:layout_height="match_parent"
    Android:layout_gravity="center"
    Android:layout_weight="1"
    Android:divider="?android:dividerHorizontal"
    Android:gravity="center"
    Android:orientation="vertical"
    Android:showDividers="middle" >
44
Deepak Goel

Einfachster Weg:

Vertikaler Teiler:

<View style="@style/Divider.Vertical"/>

Vertical divider view

Horizontaler Teiler:

<View style="@style/Divider.Horizontal"/>

Horizontal divider view

Das ist alles ja!

Setzen Sie dies einfach in res>values>styles.xml

<style name="Divider">
    <item name="Android:background">?android:attr/listDivider</item> //you can give your color here. that will change all divider color in your app.
</style>

<style name="Divider.Horizontal" parent="Divider">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">1dp</item> // You can change thickness here.

</style>

<style name="Divider.Vertical" parent="Divider">
    <item name="Android:layout_width">1dp</item>
    <item name="Android:layout_height">match_parent</item>
</style>
34
Khemraj

wenn Sie actionBarSherlock verwenden, können Sie die Klasse com.actionbarsherlock.internal.widget.IcsLinearLayout verwenden, um Teiler zu unterstützen und diese zwischen den Ansichten anzuzeigen.

anwendungsbeispiel:

<com.actionbarsherlock.internal.widget.IcsLinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_alignParentBottom="true"
    Android:layout_alignParentLeft="true"
    Android:divider="@drawable/divider"
    Android:dividerPadding="10dp"
    Android:orientation="vertical"
    Android:showDividers="beginning|middle|end" >
... children...

res/drawable/divider.xml:

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

    <size Android:height="2dip" />

    <solid Android:color="#FFff0000" />

</shape>

beachten Sie, dass in der Vorschau des Grafikdesigners aus irgendeinem Grund "Android.graphics.bitmap_delegate.nativeRecycle (I) Z" angezeigt wird. Ich bin nicht sicher, was es bedeutet, aber es kann ignoriert werden, da es sowohl auf neuen Versionen von Android als auch auf alten (getestet auf Android 4.2 und 2.3) einwandfrei funktioniert.

anscheinend wird der Fehler nur angezeigt, wenn API17 für den Grafikdesigner verwendet wird.

15

Schreiben Sie einfach Folgendes:

 Android:divider="?android:dividerHorizontal"
 Android:showDividers="middle"

vollständiges Beispiel:

<LinearLayout
        Android:id="@+id/llTipInformation"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/tvServiceRating"
        Android:orientation="horizontal"
        Android:divider="?android:dividerHorizontal"
        Android:layout_marginTop="@dimen/activity_horizontal_margin"
        Android:showDividers="middle">

        <TextView
            Android:layout_width="0dp"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:gravity="center"
            Android:text="@string/main.msg.tippercent"
            Android:textAppearance="?android:attr/textAppearanceMedium"
            Android:textColor="@color/colorWhite"
            Android:layout_marginTop="@dimen/activity_vertical_margin"/>
        <TextView
            Android:layout_width="0dp"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:gravity="center"
            Android:text="@string/main.msg.tiptotal"
            Android:textAppearance="?android:attr/textAppearanceMedium"
            Android:textColor="@color/colorWhite"
            Android:layout_marginTop="@dimen/activity_vertical_margin"/>

</LinearLayout>
15
Farid Ahmed
<View
            Android:layout_width="2dp"
            Android:layout_height="match_parent"
            Android:layout_marginTop="4dp"
            Android:background="@Android:color/darker_gray" />

Zwischen zwei Layouts Geben Sie diesen Code ein, um Divider zu erhalten.

12
SHASHWAT DOSHI

Hinzufügen dieser Ansicht; das zeichnet ein Trennzeichen zwischen Ihrem textviews

<View
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    Android:background="#000000" />
12
elfekz

Hier ist Ihre Antwort ... Dies ist ein Beispiel, um die Grenze zwischen Steuerelementen zu ziehen ...

<TextView
            Android:id="@+id/textView1"
            style="@style/behindMenuItemLabel1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="1dp"
            Android:text="FaceBook Feeds" />

         <View
             Android:layout_width="fill_parent"
             Android:layout_height="2dp"
             Android:background="#d13033"/>

         <ListView
            Android:id="@+id/list1"
            Android:layout_width="350dp"
            Android:layout_height="50dp" />

Diese Code-Ziehlinie zwischen zwei Steuerelementen ...

11
Archan Desai

Es ist sehr einfach. Erstellen Sie einfach eine Ansicht mit der schwarzen Hintergrundfarbe.

<View
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    Android:background="#000"/>

Dadurch wird eine horizontale Linie mit Hintergrundfarbe erstellt. Sie können wie in jeder anderen Ansicht auch andere Attribute wie Ränder, Abstände usw. hinzufügen.

11
Wijay Sharma

Es fügt überall in Ihrem Layout einen horizontalen Teiler hinzu.

    <TextView
       style="?android:listSeparatorTextViewStyle"
       Android:layout_width="fill_parent"
       Android:layout_height="wrap_content"/>
10
Kamel

Sie können dieses <View> -Element direkt nach der ersten Textansicht verwenden.

 <View
         Android:layout_marginTop="@dimen/d10dp"
         Android:id="@+id/view1"
         Android:layout_width="fill_parent"
         Android:layout_height="1dp"
         Android:background="#c0c0c0"/>
7
Yogesh Sarvaiya

Laufzeitversion:

View dividerView = new View(getContext());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
    ViewGroup.LayoutParams.FILL_PARENT, UIUtils.dpToPix(getContext(), 1));
dividerView.setLayoutParams(lp);

TypedArray array = getContext().getTheme()
    .obtainStyledAttributes(new int[] {Android.R.attr.listDivider});
Drawable draw = array.getDrawable(0);       
array.recycle();

dividerView.setBackgroundDrawable(draw);
mParentLayout.addView(dividerView);
7
alcsan

Verwenden Sie diesen XML-Code, um eine vertikale Linie hinzuzufügen

 <View
    Android:layout_width="1dp"
    Android:layout_height="match_parent"
    Android:layout_centerVertical="true"
    Android:background="#000000" />

Verwenden Sie diesen XML-Code, um horizontale Linien hinzuzufügen

<View
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    Android:background="#000000" />
7
//for vertical line:

<View
   Android:layout_width="1dp"
   Android:layout_height="fill_parent"
   Android:background="#00000000" />




//for horizontal line: 

<View
   Android:layout_width="fill_parent"
   Android:layout_height="1dp"
   Android:background="#00000000" />
//it works like a charm
6
dreamdeveloper

In Fällen, in denen die Eigenschaft Android:layout_weight verwendet wird, um beispielsweise Layoutkomponenten den verfügbaren Bildschirmbereich zuzuweisen

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="horizontal">

    <LinearLayout
        Android:layout_width="0dp"
        Android:layout_weight="1"
        Android:layout_height="match_parent"
        Android:orientation="vertical">
        ...
        ...
    </LinearLayout>

     /* And we want to add a verical separator here */

    <LinearLayout
        Android:layout_width="0dp"
        Android:layout_weight="1"
        Android:layout_height="match_parent"
        Android:orientation="vertical">
        ...
        ...
     </LinearLayout>

</LinearLayout>

Um ein Trennzeichen zwischen den vorhandenen zwei Layouts einzufügen, das bereits den gesamten Bildschirmbereich belegt, können wir nicht einfach ein weiteres LinearLayout mit Android:weight:"1" hinzufügen, da dies drei Spalten mit gleicher Breite ergibt, die wir nicht möchten. Stattdessen verringern wir den Platz, den wir diesem neuen Layout geben. Der endgültige Code würde folgendermaßen aussehen:

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="horizontal">

    <LinearLayout
        Android:layout_width="0dp"
        Android:layout_weight="1"
        Android:layout_height="match_parent"
        Android:orientation="vertical">
        ...
        ...
    </LinearLayout>

                    /* *************** ********************** */

    /* Add another LinearLayout with Android:layout_weight="0.01" and 
       Android:background="#your_choice" */
    <LinearLayout
        Android:layout_width="0dp"
        Android:layout_height="match_parent"
        Android:layout_weight="0.01"
        Android:background="@Android:color/darker_gray"
     />

    /* Or View can be used */
    <View
        Android:layout_width="1dp"
        Android:layout_height="match_parent"
        Android:layout_marginTop="16dp"
        Android:background="@Android:color/darker_gray"
     />

                     /* *************** ********************** */

    <LinearLayout
        Android:layout_width="0dp"
        Android:layout_weight="1"
        Android:layout_height="match_parent"
        Android:orientation="vertical">
        ...
        ...
    </LinearLayout>

</LinearLayout>

enter image description here

5
Cyclotron3x3
<ImageView
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:paddingBottom="2dp"
    Android:paddingLeft="5dp"
    Android:paddingRight="5dp"
    Android:paddingTop="2dp"
    Android:scaleType="fitXY"
    Android:src="?android:attr/listDivider" />
4

Wenn Sie es häufig verwenden, ist es am besten, wenn Sie es verwenden

styles.xml:

<style name="Seperator">
        <item name="Android:layout_width">match_parent</item>
        <item name="Android:layout_height">1dp</item>
        <item name="Android:background">@color/light_color</item>
    </style>

fügen Sie es jetzt in Ihrem Layout wie folgt hinzu:

<View style="@style/Seperator" />
4
Irshu

Fügen Sie eine horizontale schwarze Linie wie folgt hinzu:

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    Android:background="#000000"
    Android:layout_marginTop="10dp"/>
4
Jyoti Sharma

Um die Antwort von Camille Sévigny zu vervollständigen, können Sie zusätzlich eine eigene Linienform definieren, um beispielsweise die Linienfarbe anzupassen.

Definieren Sie eine XML-Form in einem Zeichenverzeichnis. line_horizontal.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto" Android:shape="line">
    <stroke Android:width="2dp" Android:color="@Android:color/holo_blue_dark" />
    <size Android:width="5dp" />
</shape>

Verwenden Sie diese Zeile in Ihrem Layout mit den gewünschten Attributen:

    <ImageView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:paddingBottom="2dp"
        Android:paddingLeft="5dp"
        Android:paddingRight="5dp"
        Android:paddingTop="2dp"
        Android:src="@drawable/line_horizontal" />
3
L. G.

Normalerweise benutze ich diesen Code:

<ImageView
    Android:id="@+id/imageView2"
    Android:layout_width="match_parent"
    Android:layout_height="1dp"
    Android:layout_alignParentLeft="true"
    Android:layout_marginLeft="10dp"
    Android:layout_marginRight="10dp"
    Android:layout_marginTop="10dp"
    Android:background="#aa000000" />

wenn sich in Ihrem Layout ein Objekt befindet und Sie eine Zeile darunter festlegen möchten, verwenden Sie dieses Attribut in ImageView:

Android:layout_below="@+id/textBox1"
3
Hossein

Dies würde Ihnen helfen, dieses Problem zu beheben. Hier wird eine kleine Ansicht erstellt, um eine schwarze Linie als Trennlinie zwischen zwei Ansichten zu erstellen.

 <View
        Android:layout_width="3dp"
        Android:layout_height="wrap_content"
        Android:background="@Android:color/black"
         />
3
Mayank Garg

Hier ist der Code "eine horizontale Trennlinie zwischen zwei Textansichten". Versuche dies

    <TextView
        Android:id="@id/textView"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textSize="5dp"
        Android:inputType="textPersonName"
        Android:text:"address" />


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


    <TextView
        Android:id="@id/textView7"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:inputType="textPersonName" 
        Android:text:"Upload File" />/>
2
Sunil

Einfache lösung

<TextView
  Android:layout_width="match_parent"
  Android:layout_height="1dp"
  Android:background="#c0c0c0"
  Android:id="@+id/your_id"
  Android:layout_marginTop="16dp" 
  Android:layout_below="@+id/Id_of__view_present_above"
/>
1
shreedhar bhat

Teilen Sie den Raum in zwei gleiche Teile:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"
        Android:divider="?android:dividerHorizontal"
        Android:showDividers="end"></LinearLayout>

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"></LinearLayout>

</LinearLayout>

Beachten Sie, dass ein Teil am Ende einen Teiler enthält

1
Dan Alboteanu
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<item
    Android:bottom="0dp"
    Android:left="-2dp"
    Android:right="-2dp"
    Android:top="-2dp">
    <shape Android:shape="rectangle">
        <stroke
            Android:width="1dp"
            Android:color="@color/divider" />
    </shape>
</item>

Wenn Sie beispielsweise recyclerView für Ihre Artikel verwendet haben:

in build.gradle schreibe:

dependencies {
    compile 'com.yqritc:recyclerview-flexibledivider:1.4.0'

Wenn Sie die Werte für Farbe, Größe und Rand festlegen möchten, können Sie Folgendes festlegen:

RecyclerView recyclerView = (RecyclerView) 
findViewById(R.id.recyclerview);
recyclerView.addItemDecoration(
        new HorizontalDividerItemDecoration.Builder(this)
                .color(Color.RED)
                .sizeResId(R.dimen.divider)
                .marginResId(R.dimen.leftmargin, R.dimen.rightmargin)
                .build());
0
Morozov