如何将线角半径应用于LinearLayout


Answers:


277

您可以在drawable文件夹中创建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 2013年

@MrAppleBR:我将无法设置背景图片:正确。但是在问题的上下文中,OP拥有一个有效的用例。在您提到的用例中,这不是您想要的。
Siddharth Lele 2013年

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

可绘制文件夹rounded_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或任何View的背景。

 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());
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.