Je voulais donc avoir un TextView avec une bordure cool autour. Je ne pouvais pas trouver de moyen standard de le faire, alors j'ai trouvé ceci:
@ drawable/custom_bg_1: Une forme arrondie bleue
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#439CC8"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
</shape>
@ drawable/custom_bg_2: Une forme arrondie blanche
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#FFFFFF"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
</shape>
myactivity.xml: le xml de l'activité
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
Android:padding="15dp" >
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:padding="2dp"
Android:background="@drawable/custom_bg_1" >
<TextView Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="@string/curr_loc"
Android:textSize="15sp"
Android:background="@drawable/custom_bg_2" />
</LinearLayout>
</Linearlayout>
Le résultat:
Ce que je fais ici, c'est superposer un arrière-plan de forme blanche à l'intérieur d'un arrière-plan de forme bleue pour donner l'effet d'une bordure bleue. Je ne peux pas imaginer que c'est la meilleure façon d'obtenir cet effet. J'ai vu d'autres articles qui tentent de résoudre ce problème tels que this et this , mais j'ai l'impression qu'ils sont tout aussi efficaces que mon implémentation.
Existe-t-il un meilleur moyen ou un moyen plus standard de simplement mettre une bordure autour de certaines vues telles qu'une TextView ou dois-je simplement m'en tenir à la façon dont je le fais?
ÉDITER
J'ai changé custom_bg_2.xml pour ressembler à ceci:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#FFFFFF"/>
<stroke Android:width="2dp" Android:color="#000000"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
</shape>
Et maintenant j'obtiens ce résultat:
Il semble que je puisse obtenir un aperçu en incluant <stroke ... />
en forme.
Vous pouvez probablement vous en tirer avec simplement custom_bg_2 si vous ajoutez une section <stroke>:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#FFFFFF"/>
<corners Android:radius="3dp" />
<padding Android:left="10dp" Android:top="10dp"
Android:right="10dp" Android:bottom="10dp" />
<stroke Android:color="#439CC8" Android:width="2dp" />
</shape>
Pourquoi ne pas essayer coup au lieu de solide ?
Selon Shape Drawable vous pouvez faire quelque chose comme:
<stroke Android:width="2dp" Android:color="#439CC8"/>
au lieu de <solid/>
, puis définissez-le comme arrière-plan TextView
.