我如何制作圆角布局?我想应用圆角到我的线性布局。


当前回答

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF"/>
    <stroke android:width="3dip" android:color="#B1BCBE" />
    <corners android:radius="10dip"/>
    <padding android:left="3dip" android:top="3dip" android:right="3dip" android:bottom="3dip" />
</shape>

@David,只是把padding的值和stroke一样,所以无论图像大小,边框都是可见的

其他回答

最好和最简单的方法是在布局中使用card_background drawable。这也符合谷歌的材料设计准则。只需要在你的LinearLayout中包含这个:

android:background="@drawable/card_background"

将它添加到你的可绘制目录并命名为card_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="#BDBDBD"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>

    <item
        android:left="0dp"
        android:right="0dp"
        android:top="0dp"
        android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>
</layer-list>

我是这样做的:

检查屏幕截图:

在可绘制文件夹中创建名为custom_rectangle.xml的可绘制文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="@android:color/white" />

    <corners android:radius="10dip" />

    <stroke
        android:width="1dp"
        android:color="@android:color/white" />

</shape>

现在在视图上应用矩形背景:

mView.setBackground(R.drawlable.custom_rectangle);

Done

一个更好的方法是:

background_activity.xml

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:gravity="fill">
        <color android:color="@color/black"/>
    </item>
    <item>
        <shape android:gravity="fill">
            <solid android:color="@color/white"/>
            <corners android:radius="10dip"/>
            <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
        </shape>
    </item>
</layer-list>

这也将在API 21以下工作,并给你类似这样的东西:


如果您愿意多做一些努力,更好地控制,那么请使用android.support.v7.widget。使用CardView的cardCornerRadius属性(并将elevation属性设置为0dp以摆脱任何伴随的投影)。此外,这将从API水平低至15起工作。

你可以用自定义视图来做,像这个RoundAppBar和RoundBottomAppBar。 这里有一个路径用于clipPath画布。

试试这个…

1.创建可绘制的xml(custom_layout.xml):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<solid android:color="#FFFFFF" />

<stroke
    android:width="2dp"
    android:color="#FF785C" />

<corners android:radius="10dp" />

</shape>

2.添加视图背景

android:background="@drawable/custom_layout"