¿Cómo puedo crear un borde alrededor de un LinearLayout de Android?


Respuestas:


241

Por supuesto. Puede agregar un borde a cualquier diseño que desee. Básicamente, necesita crear un elemento de diseño personalizado y agregarlo como fondo a su diseño. ejemplo:

Cree un archivo llamado customborder.xmlen su carpeta dibujable:

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

Ahora aplíquelo como fondo a su diseño más pequeño:

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

Eso debería hacer el truco.

Ver también:


29
<sólido> rellenará el color en el rectángulo. Necesitas usar <stroke> en su lugar para dibujar solo el borde.
NightFury

1
El truco aquí es en realidad el <padding>, me tomó un tiempo descubrir por qué mi forma no funcionaba. Con relleno funciona bien.
John

3
¿Ambos <solid/>y <stroke/>llenar todo el rectángulo? ¿Es esto un error en mi código?
2014

13
Agregue <stroke android: width = "1dip" android: color = "# Wavebreak" />, funciona bien.
Pierry

1
El comentario de Pierry hace que esta respuesta sea correcta. De lo contrario, solo puede obtener un fondo completo.
kagkar

25

Creat XML llamado border.xml en la carpeta dibujable como se muestra a continuación:

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

luego agregue esto al diseño lineal como fondo como este:

     android:background="@drawable/border"

11

Prueba esto:

Por ejemplo, definamos res / drawable / my_custom_background.xml como:

(cree este diseño en su carpeta dibujable) 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>

11

Cree un archivo xml en una carpeta dibujable

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

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

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

Ahora llame a este xml a su fondo de diseño pequeño

android: background = "@ drawable / yourxml"


Aquí no se permite el trazo de elemento.
hdavidzhu

3

Esta solución solo agregará el borde, el cuerpo del LinearLayout será transparente.

Primero, cree este borde dibujable en la carpeta dibujable, 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>

Luego, en su Vista LinearLayout, agregue el border.xml como fondo como este

<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/border">

3

también puedes hacerlo pragmáticamente

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

Luego configure el fondo del diseño como:

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

3

Agregaré el enlace de documentos de Android a otras respuestas.

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

Describe todos los atributos de Shape Drawable y strokeentre ellos para establecer el borde.

Ejemplo:

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

Borde rojo con fondo transparente.


La parte sólida permite configurar el tinte solo en el borde. +1
aksh1618

0

¿No quieres crear un recurso dibujable?

  <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

Prueba esto en tu resolución / dibujable

    <?xml version="1.0" encoding="UTF-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
  <shape
    android:shape="rectangle">
    <padding android:left="15dp"
        android:right="15dp"
        android:top="15dp"
        android:bottom="15dp"/>
    <stroke android:width="10dp"
        android:color="@color/colorPrimary"/>
  </shape>
</item><item android:left="-5dp"
        android:right="-5dp"
        android:top="-5dp"
        android:bottom="-5dp">
  <shape android:shape="rectangle">
    <solid android:color="@color/background" />
  </shape></item></layer-list>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.