Comment append un diviseur (vertical) à un LinearLayout horizontal?

J’essaie d’append un séparateur à une disposition linéaire horizontale, mais je n’arrive à rien. Le diviseur ne montre tout simplement pas. Je suis un débutant total avec Android.

Ceci est ma mise en page XML:

  

utilisez ceci pour un diviseur horizontal

  

et cela pour diviseur vertical

  

OU si vous pouvez utiliser le diviseur LinearLayout, pour un diviseur horizontal

      

et dans LinearLayout

  

Si vous souhaitez utiliser un diviseur vertical, puis à la place d’ android:height="1dp" en forme, utilisez android:width="1dp"

Astuce: n’oubliez pas l’item android:showDividers .

Essayez ceci, créez un séparateur dans le dossier res/drawable :

vertical_divider_1.xml

      

Et utilisez l’atsortingbut divider dans LinearLayout comme ceci:

     

Note: android:divider est uniquement disponible sous Android 3.0 (API niveau 11) ou supérieur.

Il est facile d’append un diviseur à la mise en page, nous n’avons pas besoin d’une vue séparée.

  

Le code ci-dessus fait un séparateur vertical pour LinearLayout

Mise à jour: pre-Honeycomb en utilisant AppCompat

Si vous utilisez la bibliothèque AppCompat v7, vous souhaiterez peut-être utiliser la vue LinearLayoutCompat . Avec cette approche, vous pouvez utiliser des séparateurs pouvant être dessinés sur Android 2.1, 2.2 et 2.3.

Exemple de code:

  

drawable / divider.xml: (diviseur avec un peu de remplissage en haut et en bas)

        

Note très importante: la vue LinearLayoutCompat ne prolonge pas LinearLayout et vous ne devez donc pas utiliser android:showDividers ou android:divider propriétés du android:divider mais celles personnalisées: app:showDividers et app:divider . Dans le code, vous devez également utiliser LinearLayoutCompat.LayoutParams non LinearLayout.LayoutParams !

Je viens de rencontrer le même problème aujourd’hui. Comme l’indiquent les réponses précédentes, le problème provient de l’utilisation d’une couleur dans la balise de séparation, plutôt que d’un dessin. Cependant, au lieu d’écrire mon propre fichier XML, je préfère utiliser les atsortingbuts thématiques autant que possible. Vous pouvez utiliser l’androïde: attr / dividerHorizontal et android: attr / dividerVertical pour obtenir un dessin pouvant être prédéfini:

    

Les atsortingbuts sont disponibles dans les API 11 et supérieures.

En outre, comme mentionné par bocekm dans sa réponse, la propriété dividerPadding n’ajoute PAS de remplissage supplémentaire de part et d’autre d’un diviseur vertical, comme on peut le supposer. Au lieu de cela, il définit le remplissage supérieur et inférieur et peut donc tronquer le diviseur s’il est trop grand.

Malheureusement, vous devez activer l’affichage des séparateurs à partir du code dans votre activité. Par exemple:

 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); } 

Vous pouvez utiliser le diviseur intégré, cela fonctionnera pour les deux orientations.

  

Votre diviseur n’est peut-être pas visible en raison d’un trop grand partage de diviseur. Vous définissez 22dip, ce qui signifie que le diviseur est tronqué de 22dip du haut et de 22dip du bas. Si votre hauteur est inférieure ou égale à 44dip, aucun diviseur n’est visible.

Vous devez créer n’importe quelle vue pour separater comme textview ou imageview, puis définir l’arrière-plan si vous avez une image autre que la couleur comme arrière-plan.

J’espère que cela vous aidera.

Pour être dessiné, le diviseur de LinearLayout doit avoir une certaine hauteur alors que ColorDrawable (qui est essentiellement #00ff00 ainsi que toute autre couleur codée en dur) n’a pas de hauteur. Une manière simple (et correcte) de résoudre ce problème consiste à envelopper votre couleur dans du Drawable avec une hauteur prédéfinie, telle que la shape pouvant être dessinée.

Vous pouvez utiliser IcsLinearLayout, tel qu’utilisé dans la bibliothèque ActionBarSherlock, ou utiliser l’API normale disponible sur ICS (ou copier son code).

EDIT: vous pouvez également utiliser LinearLayoutICS tel qu’utilisé sur la bibliothèque de support. J’ai fait un post à ce sujet ici .

Vous pouvez utiliser la même technique pour créer le dessin comme illustré ici ou créer un dessin à 9 patchs.

Si la réponse de Kapil Vats ne fonctionne pas, essayez quelque chose comme ceci:

drawable / divider_horizontal_green_22.xml

     

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

J’ai rencontré un problème où l’atsortingbut de remplissage ne fonctionnait pas, j’ai donc dû définir la hauteur du diviseur directement dans le diviseur.

Remarque:

Si vous voulez l’utiliser dans LinearLayout vertical, créez-en un nouveau, comme ceci: drawable / divider_vertical_green_22.xml