web-dev-qa-db-fra.com

Comment ajouter une bordure autour de la mise en page linéaire, sauf en bas?

Comment ajouter une bordure autour de la mise en page linéaire, sauf en bas? LinearLayout doit avoir une bordure à gauche, en haut et à droite, mais pas en bas.

64
Damir

Créez un fichier XML nommé border.xml dans le dossier pouvant être dessiné et insérez-y le code suivant.

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item> 
    <shape Android:shape="rectangle">
      <solid Android:color="#FF0000" /> 
    </shape>
  </item>   
    <item Android:left="5dp" Android:right="5dp"  Android:top="5dp" >  
     <shape Android:shape="rectangle"> 
      <solid Android:color="#000000" />
    </shape>
   </item>    
 </layer-list> 

Ajoutez ensuite un fond à votre mise en page linéaire comme ceci:

         Android:background="@drawable/border"

EDIT:

Ce XML a été testé avec une galaxie en cours d'exécution Gingerbread 2.3. et s'est parfaitement déroulé comme indiqué dans l'image ci-dessous:

enter image description here

AUSSI

testé avec galaxy s 3 en cours d'exécution JellyBean 4.1.2 et a fonctionné parfaitement comme indiqué dans l'image ci-dessous:

enter image description here

Enfin, il fonctionne parfaitement avec toutes les API

EDIT 2:

Vous pouvez également utiliser un trait pour conserver l’arrière-plan aussi transparent que possible tout en conservant une bordure, sauf en bas avec le code suivant.

<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
   <item Android:left="0dp" Android:right="0dp"  Android:top="0dp"  
        Android:bottom="-10dp"> 
    <shape Android:shape="rectangle">
     <stroke Android:width="10dp" Android:color="#B22222" />
    </shape>
   </item>  
 </layer-list> 

espérons que cette aide.

169
Android Stack

Enregistrez ce fichier xml et ajoutez-le comme arrière-plan de la mise en page linéaire ....

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"> 
    <stroke Android:width="4dp" Android:color="#FF00FF00" /> 
    <solid Android:color="#ffffff" /> 
    <padding Android:left="7dp" Android:top="7dp" 
            Android:right="7dp" Android:bottom="0dp" /> 
    <corners Android:radius="4dp" /> 
</shape>

J'espère que cela t'aides! :)

57
Kenny

Kenny a raison, je veux juste clarifier certaines choses.

  1. Créez le fichier border.xml et le mettre dans le dossier res/drawable/
  2. ajouter le code

    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"> 
       <stroke Android:width="4dp" Android:color="#FF00FF00" /> 
       <solid Android:color="#ffffff" /> 
       <padding Android:left="7dp" Android:top="7dp" 
            Android:right="7dp" Android:bottom="0dp" /> 
       <corners Android:radius="4dp" /> 
    </shape>
    
  3. en retrait comme Android:background="@drawable/border" partout où vous voulez la frontière

Le mien d'abord n'a pas fonctionné parce que j'ai mis le border.xml dans le mauvais dossier!

22
Jonas

Voici un lien Github vers une bibliothèque légère et très facile à intégrer qui vous permet de jouer avec les bordures à votre guise pour n'importe quel widget, simplement basé sur un widget FrameLayout.

Voici un exemple de code rapide pour vous montrer à quel point c'est facile, mais vous trouverez plus d'informations sur le lien.

<com.khandelwal.library.view.BorderFrameLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            app:leftBorderColor="#00F0F0"
            app:leftBorderWidth="10dp"
            app:topBorderColor="#F0F000"
            app:topBorderWidth="15dp"
            app:rightBorderColor="#F000F0"
            app:rightBorderWidth="20dp"
            app:bottomBorderColor="#000000"
            app:bottomBorderWidth="25dp" >
    </com.khandelwal.library.view.BorderFrameLayout>

Donc, si vous ne voulez pas de bordures en bas, supprimez les deux lignes de fond de ce widget personnalisé, et c'est tout.

Et non, je ne suis ni l'auteur de cette bibliothèque ni l'un de ses amis ;-)

2
PAD