如何创建四面环形的布局?

时间:2015-06-09 14:03:23

标签: android-layout android-linearlayout

我创建了一个布局,应该在所有四边都有圆角。但是,布局仅在左上角和右上角显示圆角。如何创建一个四边(包括左上角和右上角)有圆角的布局?这是我的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>

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果你想在所有四边都有圆角,那么我的建议是使用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>

答案 1 :(得分:0)

首先,如果您需要对所有角落进行四舍五入,您不需要逐个提及所有角落,请添加:

\{(?!(?:token1|token2)\}).*?\}

我拉了你的代码并编译了它,看起来它正在工作。唯一的事情是你的按钮与你的父LinearLayout的底部对齐,并且不允许你看到底角。我向父LinearLayout添加了一些填充,现在所有圆角都可见。

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

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

这里是drawable:

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

让我知道它是否适合你。

干杯 甲