Como aplicar o raio de canto ao LinearLayout

Respostas:

278

Você pode criar um arquivo XML na pasta drawable. Chame-o, por exemplo,shape.xml

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

A <corner>tag é para sua pergunta específica.

Faça as alterações necessárias.

E em seu 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>

Isso é o que geralmente faço em meus aplicativos. Espero que isto ajude....

Siddharth Lele
fonte
Como definir a imagem de fundo neste xml
vignesh de
1
@vignesh: Qual drawable e definir onde? Se você quer dizer o <shape>exemplo, ele já está definido no layout XML aqui:android:background="@drawable/shape"
Siddharth Lele
3
e se esse layout linear já tiver uma imagem de fundo e eu quiser que ele tenha um raio de canto? no seu código não poderei definir uma imagem de fundo, uma vez que a propriedade de fundo linearLayout é definida com shape.xml
newton_guima
@MrAppleBR: Não vou conseguir definir uma imagem de fundo : Correto. Mas, no contexto da pergunta, o OP tinha um caso de uso em que isso era válido. No caso de uso que você mencionou, não é isso que você deveria buscar.
Siddharth Lele
@SiddharthLele, o que devo procurar? você poderia explicar com uma pequena fonte ou talvez um link? obrigado!
newton_guima
11

Você usaria um Drawable de forma como plano de fundo do layout e definiria seu cornerRadius. Verifique este blog para um tutorial detalhado

Mirko Lindner
fonte
8

Layout

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

Pasta drawable rounded_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
fonte
2

tente fazer isso, para definir programaticamente um plano de fundo com raio para LinearLayout ou qualquer 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
fonte