684 votes

Android dessine une ligne de séparation/division dans la mise en page ?

Je voudrais tracer une ligne au milieu d'une mise en page et l'utiliser comme séparateur d'autres éléments tels que les TextView. Existe-t-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 aussi qu'il soit positionné de manière relative. Merci

1783voto

Alex Kucherenko Points 5434

J'utilise généralement ce code pour ajouter une ligne horizontale :

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

Pour ajouter un séparateur vertical, basculez l'option layout_width et layout_height valeurs

11 votes

Cela fonctionne pour moi aussi. Vous pouvez également ajouter Android:layout_marginTop="2dp" (etc) pour ajouter des espaces en haut et en bas.

4 votes

C'est idéal pour une simple ligne horizontale. Mais si vous voulez que la couleur s'estompe aux extrémités, utilisez l'une des autres méthodes proposées ici.

96 votes

Ou encore mieux, utilisez layout_height="2dp" and android:background="?android:attr/listDivider"

670voto

toddles_fp Points 1584

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>

Ensuite, dans mes mises en page, il y a moins de code et c'est plus simple à lire.

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

43 votes

C'est génial et, à mon avis, la meilleure solution ! De cette façon, vous n'avez pas à définir manuellement la couleur, ce qui facilite la cohérence lorsque vous avez plusieurs thèmes (j'utilise Theme.Sherlock et Theme.Sherlock.Light).

2 votes

+1 - Un excellent remplacement de la solution <Image> à 9 lignes que j'utilisais jusqu'à présent. Très... élégant

3 votes

Cela semble être la solution la plus propre. Merci !

137voto

Camille Sévigny Points 2617

Ajoutez-le dans votre mise en page à l'endroit où vous souhaitez placer le séparateur (modifiez les attributs en fonction de vos besoins) :

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

1 votes

Merci, ça a marché pour moi. C'est particulièrement joli dans DrawerLayout

4 votes

@Ahmed Vous ne pouvez pas utiliser cette fonction si le fond de votre activité est blanc, je suppose. Dans ce cas, utilisez Android:src="@Android:drawable/divider_horizontal_bright" à la place.

58voto

pprados Points 433
<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" />

1 votes

Je défendrais cette méthode plus que les autres car elle utilise un style déjà existant, mais elle pourrait ne pas plaire à tout le monde.

3 votes

L'inconvénient de cette approche est toutefois qu'Android ne garantit PAS le style existant.

46voto

deepak goel Points 1376

Utilisez ce code. Il vous 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" >

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X