方形布局边框与圆形内边缘

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方形布局边框与圆形内边缘相关的知识,希望对你有一定的参考价值。

我正在尝试创建一个布局边框,其边角为正方形,内侧为圆形。我已经知道我需要创建一个由两个形状组成的.xml可绘制定义:一个具有笔划宽度和角半径,另一个仅具有笔划宽度:

抽签

round_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="4dp" 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:width="2dp" android:color="#FF000000" />
    <solid android:color="#FFC0C0C0" />
</shape> 

这些中的每一个都独立地作为边框工作,如下所示:

android:background="@drawable/round_border" 

但当他们中的任何一个或两个被添加到项目列表可绘制时,如下所示:

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"

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

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

答案

Shape Drawable Doc你可以看到形状里面没有layer-list所以你应该像这样定义你的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>

请注意,我更改了图层列表文档中所述的图层列表中项目的顺序 Each drawable in the list is drawn in the order of the list—the last drawable in the list is drawn on top 你希望它从外面平方

另一答案

创建一个像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:width="35dp"
        android:height="35dp"/>
</shape>

在布局中设置为背景

<LinearLayout
    android:id="@+id/layout_wellbeing"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:background="@drawable/rounded_corner_leuvan"
    android:orientation="horizontal" >
</LinearLayout>
另一答案

square_border.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="2dp" 
            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>

注意评论和引号! =]

另一答案

试试这个工作就好了:

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:width="1dp" android:color="#ffaaaaaa" />
   <size 
       android:width="15dp"
        android:height="15dp"/>
</shape>

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

Android 布局,有 4 个正方形,每个正方形内有一个按钮

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

ConstraintLayout:如何展平此布局?

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

如何仅使用 CSS 创建一个圆形或方形 - 中心是空心的?

怎么把DIV做成椭圆形