如何创建四面都是圆形的布局?

How to create a layout which is rounded on all sides?

我创建了一个布局,应该在所有四个边上都有圆角。但是,布局仅在左上角和右上角显示圆角。如何创建一个在所有四个边(包括左上角和右上角)都有圆角的布局?这是我的 xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_gravity="center"
    android:background="#FFF">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:background="@drawable/rounded_linearlayout"
        android:orientation="vertical"
        android:layout_margin="@dimen/welcome_margin">
        <TextView
            android:text="@string/fitToWork"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="@dimen/margintop_value"
            android:layout_marginLeft="@dimen/margin_left_value"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center">
            <TextView
                android:id="@+id/tv_yes"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="@string/yes"
                android:textColor="#FFF"
                android:textSize="@dimen/yes_text_size"
                android:background="#B5D625"/>
            <TextView
                android:id="@+id/tv_no"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="@string/no"
                android:textColor="#FFF"
                android:textSize="@dimen/yes_text_size"
                android:background="#2E2E2E"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

这里是 rounded_linearlayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle">
    <solid android:color="#FFF"/>
    <corners android:bottomRightRadius="8dip"
        android:bottomLeftRadius="8dip"  
        android:topRightRadius="8dip"
        android:topLeftRadius="8dip"/>
    <stroke android:width="1dip" android:color="#AFAFAF"/>
</shape>

提前致谢!

首先,如果你需要把所有的角都做成圆角,就不用把所有的角都一一提到了,加上这个:

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

我提取了您的代码并进行了编译,看起来可以正常工作。唯一的问题是您的按钮与父 LinearLayout 的底部对齐并且不会让您看到底角。我向父 LinearLayout 添加了一些填充,现在所有圆角都可见。

编辑: 我将您的代码更改为此并且有效: 这是布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:background="#FFF"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:background="@drawable/rounded"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="10dp" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:padding="10dp"
            android:text="fitToWork" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center" >

            <TextView
                android:id="@+id/tv_yes"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:background="#B5D625"
                android:gravity="center"
                android:text="yes"
                android:textColor="#FFF"
                android:textSize="25sp" />

            <TextView
                android:id="@+id/tv_no"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:background="#2E2E2E"
                android:gravity="center"
                android:text="no"
                android:textColor="#FFF"
                android:textSize="35sp" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

这里是可绘制对象:

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

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

    <corners
        android:bottomLeftRadius="8dip"
        android:bottomRightRadius="8dip"
        android:topLeftRadius="8dip"
        android:topRightRadius="8dip" />

    <stroke
        android:width="1dip"
        android:color="#AFAFAF" />

</shape>

让我知道它是否适合你。

干杯 A.

如果您希望所有四个边都圆角,那么我的建议是改用 cardView。在 cardView 中,您可以使用 card_view:cardCornerRadius="4dp" 此属性根据您的要求更改值来轻松完成。

从支持库中导入 CardView 作为库并将其添加到您的项目中

小代码片段

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:background="@android:color/darker_gray"
        card_view:cardCornerRadius="8dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="@dimen/abc_action_bar_default_height_material"
                android:layout_alignParentBottom="true">

                <Button
                    android:id="@+id/button1"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:background="@android:color/darker_gray"
                    android:layout_weight="1"
                    android:textColor="@android:color/black"
                    android:text="Button" />

                <Button
                    android:id="@+id/button2"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:background="@android:color/black"
                    android:layout_weight="1"
                    android:textColor="@android:color/white"
                    android:text="Button" />
            </LinearLayout>

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="Large Text"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@color/abc_background_cache_hint_selector_material_dark" />
        </RelativeLayout>
    </android.support.v7.widget.CardView>

</RelativeLayout>