So wenden Sie den Eckenradius auf LinearLayout an


Antworten:


277

Sie können eine XML-Datei im Zeichenordner erstellen. Nennen Sie es zum Beispiel:shape.xml

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

Das <corner>Tag ist für Ihre spezifische Frage.

Nehmen Sie die erforderlichen Änderungen vor.

Und in deinem 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>

Das mache ich normalerweise in meinen Apps. Hoffe das hilft....


Wie man Hintergrundbild in dieser XML
Vignesh

1
@vignesh: Welches zeichnbar und wo setzen? Wenn Sie das <shape>Beispiel meinen , ist es hier bereits im Layout-XML festgelegt:android:background="@drawable/shape"
Siddharth Lele

3
Was ist, wenn dieses lineare Layout bereits ein Hintergrundbild hat und ich möchte, dass es einen Eckenradius hat? In Ihrem Code kann ich kein Hintergrundbild festlegen, da die Eigenschaft linearLayout background mit der Datei
shape.xml

@ MrAppleBR: Ich kann kein Hintergrundbild festlegen : Richtig. Im Zusammenhang mit der Frage hatte das OP jedoch einen Anwendungsfall, in dem dies gültig war. In dem von Ihnen erwähnten Anwendungsfall ist dies nicht das, was Sie anstreben sollten.
Siddharth Lele

@SiddharthLele was soll ich machen? Könntest du das mit einer kleinen Quelle oder vielleicht einem Link erklären? Vielen Dank!
Newton_guima


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>

Zeichnungsordner 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

Versuchen Sie dies, damit Programmatisch einen Hintergrund mit Radius auf LinearLayout oder eine beliebige Ansicht setzt.

 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());
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.