web-dev-qa-db-fra.com

Comment créer une bordure autour d'un Android LinearLayout?

J'ai une grande mise en page et une mise en page plus petite à l'intérieur.

Comment créer une bordure de ligne autour de la petite mise en page?

94
user1302569

Sûr. Vous pouvez ajouter une bordure à la mise en page de votre choix. Fondamentalement, vous devez créer un dessin personnalisable et l'ajouter comme arrière-plan à votre mise en page. exemple:

Créez un fichier appelé customborder.xml dans votre dossier pouvant être dessiné:

<?xml version="1.0" encoding="UTF-8"?>
 <shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle">
   <corners Android:radius="20dp"/> 
   <padding Android:left="10dp" Android:right="10dp" Android:top="10dp" Android:bottom="10dp"/>
   <stroke Android:width="1dp" Android:color="#CCCCCC"/>
 </shape>

Maintenant, appliquez-le comme arrière-plan à votre mise en page plus petite:

<LinearLayout Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:background="@drawable/customborder">

Cela devrait faire l'affaire.

Regarde aussi:

207
Anup Cowkur

Creat XML appelé border.xml dans un dossier pouvant être dessiné comme ci-dessous:

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

puis ajoutez ceci à la mise en page linéaire comme arrière-plan comme ceci:

     Android:background="@drawable/border"
23
KDeogharkar

Créer un fichier XML dans un dossier pouvant être dessiné

<stroke
    Android:width="2dp"
    Android:color="#B40404" />

<padding
    Android:bottom="5dp"
    Android:left="5dp"
    Android:right="5dp"
    Android:top="5dp" />

<corners Android:radius="4dp" />

Maintenant, appelez ce XML à votre fond de mise en page petit

Android: background = "@ drawable/yourxml"

11
Vani

Essaye ça:

Par exemple, définissons res/drawable/my_custom_background.xml comme suit:

(créez cette mise en page dans votre dossier pouvant être dessiné) layout_border.xml

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

            <corners Android:radius="1dp" Android:bottomRightRadius="5dp"
                Android:bottomLeftRadius="0dp" Android:topLeftRadius="5dp"
                Android:topRightRadius="0dp" />
        </shape>
    </item>

</layer-list>

main.xml

<LinearLayout 
    Android:layout_gravity="center"
    Android:layout_width="200dp" 
    Android:layout_height="200dp"   
    Android:background="@drawable/layout_border" />
</LinearLayout>
10
Android_coder

Je vais ajouter le lien Android docs à d'autres réponses.

https://developer.Android.com/guide/topics/resources/drawable-resource.html#Shape

Il décrit tous les attributs de Shape Drawable et de stroke parmi eux pour définir la bordure.

Exemple:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle">
  <stroke Android:width="1dp" Android:color="#F00"/>
  <solid Android:color="#0000"/>
</shape>

Bordure rouge avec fond transparent.

3
mortalis

vous pouvez le faire aussi avec pragmatisme

  GradientDrawable gradientDrawable=new GradientDrawable();
   gradientDrawable.setStroke(4,getResources().getColor(R.color.line_Input));

Puis définissez l’arrière-plan de la mise en page comme suit:

LinearLayout layout = (LinearLayout ) findViewById(R.id.ayout); layout .setBackground(gradientDrawable);
3
Vikram singh

Cette solution ne fera qu'ajouter la bordure, le corps de LinearLayout sera transparent.

Tout d’abord, créez cette bordure pouvant être dessinée dans le dossier pouvant être dessiné, border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android= "http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <stroke Android:width="2dp" Android:color="#ec0606"/>
    <corners Android:radius="10dp"/>
</shape>

Ensuite, dans votre vue LinearLayout, ajoutez le fichier border.xml comme arrière-plan, comme ceci

<LinearLayout 
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    Android:background="@drawable/border">
3
s-hunter

Ce n'est pas exactement une réponse à la question, mais pour ceux qui veulent juste afficher la bordure des éléments de débogage, vous pouvez simplement aller dans les paramètres de votre devloppers et activer les limites de la présentation dans la section de dessin.

0
Xiidref

Vous ne voulez pas créer une ressource exploitable?

  <FrameLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@Android:color/black"
    Android:minHeight="128dp">

    <FrameLayout
      Android:layout_width="match_parent"
      Android:layout_height="match_parent"
      Android:layout_margin="1dp"
      Android:background="@Android:color/white">

      <TextView ... />
    </FrameLayout>
  </FrameLayout>
0
Jeffrey Blattman