Ligne de séparation/diviseur de dessin Android dans la mise en page?

je voudrais tracer une ligne droite au milieu d'une mise en page et l'utiliser comme un séparateur d'autres éléments comme les TextView. Est-il un bon widget pour cela. Je ne veux pas vraiment utiliser une image car il serait difficile d'y associer les autres composants. Et je veux qu'elle soit aussi relativement bien positionnée. Merci

685
demandé sur Paresh Mayani 2011-02-19 11:59:28

30 réponses

j'utilise habituellement ce code pour ajouter la ligne horizontale:

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

pour ajouter un séparateur vertical, commuter les layout_width et layout_height valeurs

1508
répondu Alex Kucherenko 2015-11-18 02:11:19

pour améliorer les réponses fournies par Alex Kucherenko et Dan Dar3

j'ai ajouté ceci à mes styles:

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

puis dans Mes layouts est moins de code et plus simple à lire.

<View style="@style/Divider"/>
532
répondu toddles_fp 2017-05-23 12:26:36

ajouter ceci dans votre mise en page où vous voulez le divider (modifier les attributs pour correspondre à votre besoin):

<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" />
129
répondu Camille Sévigny 2011-05-04 14:47:22

vous pouvez l'utiliser dans LinearLayout :

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

Par Exemple:

<?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>
77
répondu user2240225 2017-05-16 13:39:17
<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" />
52
répondu pprados 2015-05-01 18:12:11

utilisez ce code. Il aidera

<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" >
45
répondu Deepak Goel 2015-10-07 21:35:16

si vous utilisez actionBarSherlock, vous pouvez utiliser le com.actionbarsherlock.interne.widget.IcsLinearLayout classe afin de soutenir les intercalaires et de les Montrer entre les vues .

exemple d'usage:

<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/diviseur.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>

notez que pour une raison quelconque, l'aperçu dans le concepteur graphique dit" android.graphique.bitmap_delegate.nativeRecycle (I)Z" . pas sûr de ce qu'il signifie, mais il peut être ignoré car il fonctionne très bien sur les deux nouvelles versions d'android et d'anciens (testé sur android 4.2 et 2.3) .

semble que l'erreur n'est affichée que lorsque vous utilisez API17 pour le concepteur graphique.

14
répondu android developer 2013-06-13 09:11:50

Ecrivez juste ceci:

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

exemple complet:

<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>
13
répondu Farid Ahmed 2017-08-11 16:29:44

j'ai trouvé le moyen le plus simple d'ajouter un diviseur.

diviseur Vertical:

<View style="@style/dividerVertical"/>

Vertical divider view

diviseur Horizontal:

<View style="@style/dividerHorizontal"/>

Horizontal divider view

C'est tout oui!

il suffit de mettre ceci dans res>values>styles.xml

<style name="dividerBase">
    <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="dividerHorizontal" parent="dividerBase">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">1dp</item> // You can change thickness here.

</style>

<style name="dividerVertical" parent="dividerBase">
    <item name="android:layout_width">1dp</item>
    <item name="android:layout_height">match_parent</item>
</style>
13
répondu Khemraj 2018-08-28 05:01:52

ajouter cette vue; qui dessine un séparateur entre votre textviews

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#000000" />
12
répondu elfekz 2016-12-30 14:47:36

Voici votre réponse..c'est un exemple pour tracer la ligne entre les contrôles...

<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" />

ce code trace une ligne entre deux commandes...

11
répondu Archan Desai 2016-03-15 05:32:50

C'est très simple. Il suffit de créer une Vue avec la couleur de fond noir.

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

cela créera une ligne horizontale avec la couleur de fond. Vous pouvez également ajouter d'autres attributs, tels que les marges, les rembourrages etc comme tout autre point de vue.

11
répondu Wijay Sharma 2017-07-28 20:17:23

il ajoute un diviseur horizontal à n'importe où dans votre disposition.

    <TextView
       style="?android:listSeparatorTextViewStyle"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>
10
répondu Kamel 2014-01-16 18:07:53
//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
répondu dreamdeveloper 2015-07-31 09:26:45

version D'exécution:

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);
6
répondu alcsan 2015-10-07 21:34:00

utilisez ce code xml pour ajouter la ligne verticale

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

utilisez ce code xml pour ajouter la ligne horizontale

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#000000" />
6
répondu Maksudul Hasan Raju 2016-11-13 08:48:51
<View
            android:layout_width="2dp"
            android:layout_height="match_parent"
            android:layout_marginTop="4dp"
            android:background="@android:color/darker_gray" />

entre deux dispositions mettent ce code pour obtenir Divider.

6
répondu SHASHWAT DOSHI 2018-06-08 10:56:16

dans les cas où l'on utilise la propriété android:layout_weight pour attribuer de l'espace d'écran disponible à des éléments de mise en page, par exemple

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

pour ajouter un séparateur entre les deux mises en page existantes qui ont déjà pris la totalité de l'espace d'écran, nous ne pouvons pas simplement ajouter une autre sortie linéaire avec android:weight:"1" parce que cela fera trois colonnes d'égale largeur que nous ne voulons pas. Au lieu de cela, nous allons diminuer la quantité d'espace que nous allons donner à cette nouvelle disposition. Final le code ressemblerait à ceci:

<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
répondu Cyclotron3x3 2018-02-10 04:09:35

vous pouvez utiliser cet élément <View> juste après le premier TextView.

 <View
         android:layout_marginTop="@dimen/d10dp"
         android:id="@+id/view1"
         android:layout_width="fill_parent"
         android:layout_height="1dp"
         android:background="#c0c0c0"/>
5
répondu Yogesh Sarvaiya 2018-06-06 09:47:50
<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
répondu code511788465541441 2015-10-07 21:34:22

Si vous allez l'utiliser beaucoup, la meilleure chose à faire est de

les 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>

maintenant, dans votre mise en page, il suffit de l'ajouter comme:

<View style="@style/Seperator" />
4
répondu Irshu 2017-03-10 04:13:53

j'utilise habituellement ce 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" />

si vous avez un objet dans votre mise en page et que vous voulez définir une ligne au-dessous de laquelle utilisez cet attribut dans ImageView:

android:layout_below="@+id/textBox1"
3
répondu Hossein 2014-04-12 17:48:19

cela vous aiderait à résoudre ce problème. Ici une petite vue est créée pour faire une ligne noire comme séparateur entre deux vues.

 <View
        android:layout_width="3dp"
        android:layout_height="wrap_content"
        android:background="@android:color/black"
         />
3
répondu Mayank Garg 2017-07-25 03:32:22

ajouter une ligne noire horizontale en utilisant:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#000000"
    android:layout_marginTop="10dp"/>
3
répondu Jyoti Sharma 2017-08-09 09:44:07

pour compléter Camille Sévigny réponse, vous pouvez en outre définir votre propre forme de ligne par exemple pour personnaliser la couleur de ligne.

définit une forme xml dans le répertoire dessinable. 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>

utilisez cette ligne dans votre mise en page avec les attributs souhaités:

    <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" />
2
répondu L. G. 2013-03-21 10:41:42

voici le code "une ligne de séparation horizontale entre deux vues textuelles". Essayez

    <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
répondu Sunil 2018-05-22 11:59:00

Diviser l'espace en deux parties égales:

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

Avis qu'une partie contient un diviseur à la fin

1
répondu Dan Alboteanu 2016-09-24 08:40:06

Simple solution

il suffit d'ajouter ce code dans votre mise en page et de remplacer" Id_of__view_present_above " à l'id de la vue, en dessous duquel vous avez besoin du diviseur.
<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
répondu shreedhar bhat 2017-05-17 07:46:19

par exemple, si vous avez utilisé recyclerView pour vos articles:

dans la construction.gradle écrit:

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

si vous voulez définir la couleur, la taille et les valeurs de marge, vous pouvez spécifier comme suit:

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
répondu Morozov 2016-09-07 09:17:51
<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>

0
répondu FAHAD HAMMAD ALOTAIBI 2017-07-08 14:38:53