Cómo aplicar el radio de esquina a LinearLayout

Respuestas:

278

Puede crear un archivo XML en la carpeta dibujable. Llámalo, por ejemplo,shape.xml

En shape.xml:

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"   >

    <solid
        android:color="#888888" >
    </solid>

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

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

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

</shape>

La <corner>etiqueta es para su pregunta específica.

Realice los cambios necesarios.

Y en tu whatever_layout_name.xml:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_margin="5dp"
    android:background="@drawable/shape"    >
</LinearLayout>

Esto es lo que suelo hacer en mis aplicaciones. Espero que esto ayude....

Siddharth Lele
fuente
Cómo configurar la imagen de fondo en este xml
vignesh
1
@vignesh: ¿Qué dibujo y dónde lo puso? Si te refieres al <shape>ejemplo, ya está configurado en el XML de diseño aquí:android:background="@drawable/shape"
Siddharth Lele
3
¿Qué pasa si este diseño lineal ya tiene una imagen de fondo y quiero que tenga un radio de esquina? en su código, no podré establecer una imagen de fondo, ya que la propiedad de fondo linearLayout se establece con shape.xml
newton_guima
@MrAppleBR: no podré establecer una imagen de fondo : correcto. Pero en el contexto de la pregunta, el OP tenía un caso de uso donde esto era válido. En el caso de uso que menciona, esto no es lo que debería buscar.
Siddharth Lele
@SiddharthLele, ¿qué debería hacer? ¿Podrías explicar con una pequeña fuente o tal vez un enlace? ¡Gracias!
newton_guima
8

Diseño

<LinearLayout 
    android:id="@+id/linearLayout"
    android:layout_width="300dp"
    android:gravity="center"
    android:layout_height="300dp"
    android:layout_centerInParent="true"
    android:background="@drawable/rounded_edge">
 </LinearLayout>

Carpeta dibujable round_edge.xml

<shape 
xmlns:android="http://schemas.android.com/apk/res/android">
    <solid 
        android:color="@android:color/darker_gray">
    </solid>
    <stroke 
         android:width="0dp" 
         android:color="#424242">
    </stroke>
    <corners 
         android:topLeftRadius="100dip"
         android:topRightRadius="100dip"
         android:bottomLeftRadius="100dip"
         android:bottomRightRadius="100dip">
    </corners>
</shape>
Sudhir singh
fuente
2

intente esto, para que programáticamente establezca un fondo con radio en LinearLayout o cualquier Vista.

 private Drawable getDrawableWithRadius() {

    GradientDrawable gradientDrawable   =   new GradientDrawable();
    gradientDrawable.setCornerRadii(new float[]{20, 20, 20, 20, 20, 20, 20, 20});
    gradientDrawable.setColor(Color.RED);
    return gradientDrawable;
}

LinearLayout layout = new LinearLayout(this);
layout.setBackground(getDrawableWithRadius());
Ramesh Kumar
fuente