วิธีใช้ Corner Radius กับ LinearLayout


คำตอบ:


279

คุณสามารถสร้างไฟล์ XML ในโฟลเดอร์ที่วาดได้ เรียกมันเช่นshape.xml

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

<corner>แท็กสำหรับคำถามของคุณโดยเฉพาะ

ทำการเปลี่ยนแปลงตามต้องการ

และใน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>

นี่คือสิ่งที่ฉันมักจะทำในแอพของฉัน หวังว่านี่จะช่วย ....


วิธีการตั้งค่าภาพพื้นหลังใน xml นี้
ขอบภาพ

1
@vignesh: วาดแบบไหนและตั้งค่าที่ไหน ถ้าคุณหมายถึง<shape>ตัวอย่างมันถูกตั้งค่าไว้แล้วใน XML เค้าโครงที่นี่:android:background="@drawable/shape"
Siddharth Lele

3
จะเกิดอะไรขึ้นถ้าเลย์เอาต์เชิงเส้นนี้มีภาพพื้นหลังอยู่แล้วและฉันต้องการให้มีรัศมีมุม? ในโค้ดของคุณฉันจะไม่สามารถตั้งค่าภาพพื้นหลังได้เนื่องจากคุณสมบัติพื้นหลัง linearLayout ถูกตั้งค่าด้วย shape.xml
newton_guima

@MrAppleBR: ฉันจะไม่สามารถตั้งค่าภาพพื้นหลังได้ : ถูกต้อง แต่ในบริบทของคำถาม OP มีกรณีการใช้งานที่ถูกต้อง ในกรณีการใช้งานที่คุณพูดถึงนี่ไม่ใช่สิ่งที่คุณควรทำ
Siddharth Lele

@SiddharthLele ฉันจะไปเพื่ออะไร? ช่วยอธิบายด้วยแหล่งข้อมูลเล็ก ๆ น้อย ๆ หรืออาจจะเป็นลิงค์ได้ไหม ขอบคุณ!
newton_guima


8

แบบ

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

โฟลเดอร์ที่วาดได้ 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

ลองใช้วิธีนี้เพื่อให้โปรแกรมตั้งค่าพื้นหลังที่มีรัศมีเป็น LinearLayout หรือมุมมองใด ๆ

 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());
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.