Option 1 : Forme dessinable
C'est l'option la plus simple si vous voulez une bordure autour d'une mise en page ou d'une vue dans laquelle vous pouvez définir l'arrière-plan. Créez un fichier XML dans le répertoire drawable
qui ressemble à quelque chose comme ceci :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#8fff93" />
<stroke
android:width="1px"
android:color="#000" />
</shape>
Vous pouvez retirer le solid
si vous ne voulez pas de remplissage. L'ensemble background="@drawable/your_shape_drawable"
sur votre disposition/vue.
Option 2 : Vue d'arrière-plan
Voici une petite astuce que j'ai utilisée dans un RelativeLayout
. En gros, vous placez un carré noir sous la vue que vous voulez border, puis vous donnez à cette vue un peu de rembourrage (pas de marge !) pour que le carré noir soit visible sur les bords.
Évidemment, cela ne fonctionne correctement que si la vue n'a pas de zones transparentes. Si c'est le cas, je vous recommande d'écrire un script personnalisé BorderView
qui ne dessine que la bordure - cela ne devrait représenter que quelques dizaines de lignes de code.
<View
android:id="@+id/border"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/image"
android:layout_alignLeft="@+id/image"
android:layout_alignRight="@+id/image"
android:layout_alignTop="@+id/main_image"
android:background="#000" />
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_...
android:padding="1px"
android:src="@drawable/..." />
Si vous vous demandez, c'est hace travailler avec adjustViewBounds=true
. Cependant, cela ne fonctionne pas si vous voulez avoir un arrière-plan dans un entier RelativeLayout
parce qu'il y a un bug qui vous empêche de remplir une RelativeLayout
avec un View
. Dans ce cas, je recommande le Shape
traçable.
Option 3 : 9-patch
Une dernière option consiste à utiliser un dessinable à 9 cases comme celui-ci :
Vous pouvez l'utiliser sur n'importe quelle vue où vous pouvez définir android:background="@drawable/..."
. Et oui, il doit être 6x6 - j'ai essayé 5x5 et ça n'a pas marché.
L'inconvénient de cette méthode est que vous ne pouvez pas changer les couleurs très facilement, mais si vous voulez des bordures fantaisistes (par exemple, seulement une bordure en haut et en bas, comme dans cette question), vous ne pourrez peut-être pas le faire avec la fonction Shape
drawable, ce qui n'est pas très puissant.
Option 4 : Vues supplémentaires
J'ai oublié de mentionner cette option très simple si vous souhaitez uniquement des bordures au-dessus et au-dessous de votre vue. Vous pouvez placer votre vue dans une fenêtre verticale LinearLayout
(s'il ne l'est pas déjà) et ajoutez ensuite le fichier vide View
au-dessus et en dessous comme ceci :
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>
2 votes
C'est surprenant que personne n'ait mentionné dividerVertical ! C'est la chose créée par Android, pour réaliser, eh bien, des séparateurs verticaux. Rien de plus facile et vous faites tout dans le panneau WYSIWYG "Design" d'Android Studio.
0 votes
La note dividerVertical a été implémentée dans l'API 11.
1 votes
Peut-être pouvez-vous montrer comment utiliser dividerVertical ?