【问题标题】:Android how to make custom drawable shapeAndroid如何制作自定义可绘制形状
【发布时间】:2020-12-24 13:23:38
【问题描述】:

您好,我想在 xml 中绘制一个自定义形状,如下所示。如何在android中绘制以下形状?

方形.xml:

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

    <stroke android:width="3dp"
        android:color="@color/white"
        />

    <padding android:left="1dp"
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp"
        />

    <corners android:radius="1dp"
        android:bottomRightRadius="1dp" android:bottomLeftRadius="1dp"
        android:topLeftRadius="1dp" android:topRightRadius="1dp"/>
</shape>

【问题讨论】:

  • 到现在为止你尝试了什么?
  • 我可以画正方形
  • @JayRathodRJ 请看一下

标签: android xml-drawable


【解决方案1】:

创建一个名为svg的新可绘制xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="100dp"
    android:height="100dp"
    android:viewportWidth="100"
    android:viewportHeight="100">
    <path
        android:pathData="M78.2,90L50,61.8 21.8,90V10h56.4v40z"
        android:fillColor="@color/colorPrimary"/>
</vector>

更改 pathdata 以根据需要更改形状...

在您的布局 xml 中使用它,例如:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/svg">
    
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="My text"
        android:layout_centerInParent="true"/>
</RelativeLayout>

【讨论】:

  • 如何增加矢量的宽度和高度
  • 我在回答中说过更改pathdata 值,我的意思是这一行:android:pathData="M78.2,90L50,61.8 21.8,90V10h56.4v40z" 玩数字;)
【解决方案2】:

您在根标签中忘记了这部分 android:shape="rectangle" 您可以从中选择环形椭圆线和矩形形状 像这样设置你的代码

 <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#ffffffff"/>

<stroke android:width="3dp"
    android:color="@color/white"
    />

<padding android:left="1dp"
    android:top="1dp"
    android:right="1dp"
    android:bottom="1dp"
    />

<corners android:radius="1dp"
    android:bottomRightRadius="1dp" android:bottomLeftRadius="1dp"
    android:topLeftRadius="1dp" android:topRightRadius="1dp"/>
</shape>

【讨论】:

    【解决方案3】:
    <?xml version="1.0" encoding="UTF-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="#ffffffff" />
    
        <stroke android:width="3dp"
            android:color="@color/white" />
    
        <padding android:left="1dp"
            android:top="1dp"
            android:right="1dp"
            android:bottom="1dp"
            />
    
        <corners android:radius="1dp"
            android:bottomRightRadius="1dp" android:bottomLeftRadius="1dp"
            android:topLeftRadius="1dp" android:topRightRadius="1dp"/>
    </shape>
    

    您忘记在 shape 标记中提供 android:shape="rectangle"。 “line”、“oval”、“ring”也可以用于各自的形状。如果所有的角都是 1dp,只需使用 android:radius="1dp"。

    【讨论】:

    • 我不想要矩形
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多