So wenden Sie den Eckenradius auf LinearLayout an

117

Ich möchte ein Layout mit einem abgerundeten Rand erstellen. Wie kann ich einen Radius einer bestimmten Größe in a anwenden LinearLayout?

Aamir Khan
quelle
Bitte werfen Sie einen Blick auf die bereits beantwortete Frage auf stackoverflow.com/questions/1683185/…
Rajesh

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

Siddharth Lele
quelle
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
11

Sie würden ein Shape Drawable als Hintergrund für das Layout verwenden und dessen Eckradius festlegen. In diesem Blog finden Sie ein detailliertes Tutorial

Mirko Lindner
quelle
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>
Sudhir singh
quelle
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());
Ramesh Kumar
quelle