Android:只在角落边框

时间:2014-04-05 07:08:59

标签: android

在我的Android应用程序中,我只需要在四个角上使用边框,如图(白色)所示。

enter image description here

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="6">
        <VideoView
            android:id="@+id/video1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center" />
        <View
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_centerInParent="true"
            android:background="@drawable/cornerbg" />
    </RelativeLayout>

cornerbg.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="@color/transparent" />
                <stroke
                    android:width="1dp"
                    android:color="@color/btn_border"
                    android:dashWidth="50dp" // I tried this but not getting expected 
                    android:dashGap="60dp"/>

            </shape>
        </item>
        </layer-list>

如何为此编写xml?

请帮忙, 感谢

3 个答案:

答案 0 :(得分:0)

不幸的是,我不相信我用来完成此操作的方法适用于需要透明背景的视图,但它应该适用于所有其他情况。只需使用下面的代码创建一个可绘制的资源,并将其设置为您想要“仅限角落”边框的任何视图的背景。

<?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="@android:color/white" />
        </shape>
    </item>
    <item
        android:left="10dp"
        android:right="10dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/black" />
        </shape>
    </item>
    <item
        android:top="10dp"
        android:bottom="10dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/black" />
        </shape>
    </item>
    <item
        android:left="2dp"
        android:right="2dp"
        android:bottom="2dp"
        android:top="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/black" />
        </shape>
    </item>
</layer-list>

答案 1 :(得分:0)

我知道这是很久以前的问题,但我遇到了同样的问题。

我通过创建辅助布局并包含在我的主布局中来解决。

我希望这个解决方案可以帮助某人。

main_layout.xml

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="6">

    <VideoView
        android:id="@+id/video1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center" />

    <include layout="@layout/camera_box_layout" />

</RelativeLayout>

camera_box_layout.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="40dp"
    android:background="@android:color/transparent">

    <!-- Top horizzontal lines -->
    <View
        android:layout_width="100dp"
        android:layout_height="2dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:background="@android:color/darker_gray" />

    <View
        android:layout_width="100dp"
        android:layout_height="2dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:background="@android:color/darker_gray" />

    <!-- Top vertical lines -->
    <View
        android:layout_width="2dp"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:background="@android:color/darker_gray" />

    <View
        android:layout_width="2dp"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:background="@android:color/darker_gray" />

    <!-- Bottom horizzontal lines -->
    <View
        android:layout_width="100dp"
        android:layout_height="2dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:background="@android:color/darker_gray" />

    <View
        android:layout_width="100dp"
        android:layout_height="2dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:background="@android:color/darker_gray" />

    <!-- Bottom vertical lines -->
    <View
        android:layout_width="2dp"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:background="@android:color/darker_gray" />

    <View
        android:layout_width="2dp"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:background="@android:color/darker_gray" />
</RelativeLayout>

答案 2 :(得分:0)

下面是不依赖于矩形的宽度和高度的可绘制对象,您可以将此可绘制对象用于纵向和横向。请调整边框的宽度和高度:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:width="8dp"
        android:height="48dp"
        android:gravity="top|left">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="48dp"
        android:height="8dp"
        android:gravity="top|left">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="8dp"
        android:height="48dp"
        android:gravity="top|right">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="48dp"
        android:height="8dp"
        android:gravity="top|right">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="8dp"
        android:height="48dp"
        android:gravity="bottom|left">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="48dp"
        android:height="8dp"
        android:gravity="bottom|left">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="8dp"
        android:height="48dp"
        android:gravity="bottom|right">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
    <item
        android:width="48dp"
        android:height="8dp"
        android:gravity="bottom|right">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
</layer-list>