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


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


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


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>

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());
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.