Comment appliquer un rayon d'angle à une disposition linéaire

117

Je veux faire une mise en page avec une bordure arrondie. Comment puis-je appliquer un rayon d'une taille particulière dans un LinearLayout?

Aamir Khan
la source
Veuillez jeter un oeil à la question déjà répondue sur stackoverflow.com/questions/1683185/…
Rajesh

Réponses:

278

Vous pouvez créer un fichier XML dans le dossier dessinable. Appelez-le, par exemple,shape.xml

Dans 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>balise est pour votre question spécifique.

Apportez les modifications nécessaires.

Et dans votre 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>

C'est ce que je fais habituellement dans mes applications. J'espère que cela t'aides....

Siddharth Lele
la source
Comment définir l'image de fond dans ce xml
Vignesh
1
@vignesh: Quel dessinable et placez-le où? Si vous voulez dire l' <shape>exemple, il est déjà défini dans le format XML ici:android:background="@drawable/shape"
Siddharth Lele
3
Et si cette disposition linéaire a déjà une image d'arrière-plan et que je veux qu'elle ait un rayon d'angle? dans votre code, je ne pourrai pas définir une image d'arrière-plan, car la propriété d'arrière-plan linearLayout est définie avec le shape.xml
newton_guima
@MrAppleBR: je ne pourrai pas définir une image d'arrière-plan : Correct. Mais dans le contexte de la question, l'OP avait un cas d'utilisation où cela était valide. Dans le cas d'utilisation que vous mentionnez, ce n'est pas ce que vous devriez rechercher.
Siddharth Lele
@SiddharthLele que devrais-je faire? pourriez-vous expliquer avec une petite source ou peut-être un lien? Merci!
newton_guima
11

Vous utiliseriez un Shape Drawable comme arrière-plan de la mise en page et définir son cornerRadius. Consultez ce blog pour un tutoriel détaillé

Mirko Lindner
la source
8

Disposition

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

Dossier dessinable 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
la source
2

essayez ceci, pour Programmatically pour définir un arrière-plan avec un rayon sur LinearLayout ou n'importe quelle vue.

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