具有圆形内边缘的方形布局边框

Posted

技术标签:

【中文标题】具有圆形内边缘的方形布局边框【英文标题】:Square shaped layout border with round inside edges 【发布时间】:2011-09-24 17:46:29 【问题描述】:

我正在尝试创建一个外边为方形,内边为圆角的布局边框。我收集到我需要创建一个由两种形状组成的 .xml 可绘制定义:一种具有笔触宽度和角半径,另一种仅具有笔触宽度:

可绘制对象

round_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android: android:color="#FF000000" />
    <padding android:left="7dp" android:top="7dp"
            android:right="7dp" android:bottom="7dp" />
    <corners android:radius="4dp" />
    <solid android:color="#FFC0C0C0" />
</shape> 

square_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android: android:color="#FF000000" />
    <solid android:color="#FFC0C0C0" />
</shape> 

当单独应用时,这些中的每一个都作为边框独立工作,如下所示:

android:background="@drawable/round_border" 

但是当它们中的一个或两个都被添加到 item-list drawable 中时:

composite_border.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <layer-list>
        <item android:drawable="@drawable/round_border"/>
        <!-- <item android:drawable="@drawable/square_border"/> -->
    </layer-list>
</shape> 

和:

android:background="@drawable/composite_border"

布局的背景完全是黑色,而不仅仅是黑色边框。

有谁知道如何使图层列表适用于这项任务?

【问题讨论】:

感谢分享! 【参考方案1】:

从Shape Drawable Doc 你可以看到形状里面不能有图层列表,所以你应该像这样定义你的composite_border.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/square_border"/>
    <item android:drawable="@drawable/round_border"/>
</layer-list>

请注意,我按照 layer-list 文档中的说明更改了 layer-list 中您的项目的顺序Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top 并且您希望它从外部平方

【讨论】:

【参考方案2】:

试试这个就够用了:

solid背景色

stroke边界

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
   <solid 
       android:color="@color/white"/>
   <stroke android: android:color="#ffaaaaaa" />
   <size 
       android:
        android:/>
</shape>

【讨论】:

如果我想要一个填充 bw 边框和实心怎么办?【参考方案3】:

创建一个像round_background.xml这样的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
   <solid 
       android:color="#CCCC33"/>
   <size 
       android:
        android:/>
</shape>

在设置为背景的布局中

<LinearLayout
    android:id="@+id/layout_wellbeing"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:gravity="center"
    android:background="@drawable/rounded_corner_leuvan"
    android:orientation="horizontal" >
</LinearLayout>

【讨论】:

【参考方案4】:

square_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android: 
            android:color="#FF000000"
    />
    <solid android:color="#FFC0C0C0" />
</shape>

composite_border.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <layer-list>
        <item android:drawable="@drawable/round_border"/>
        <!-- <item android:drawable="@drawable/square_border"/> -->
    </layer-list>
</shape>

注意 cmets 和引号! =]

【讨论】:

谢谢 - 仍在寻找答案。

以上是关于具有圆形内边缘的方形布局边框的主要内容,如果未能解决你的问题,请参考以下文章

带有条目并具有圆形边框的图像

ConstraintLayout:如何展平此布局?

Android Wear 圆形模拟器充气方形布局

opencv,在一个有缺陷的圆形区域内如何放置更多的小圆形

如何在 QT 中获得具有圆形边缘和圆形进度边缘的 QProgressBar?

圆形或圆形 Draggable/Droppables