【问题标题】:Rounded rectangle with stroke on top android drawable XML在顶部 android 可绘制 XML 上带有笔划的圆角矩形
【发布时间】:2014-09-02 19:54:12
【问题描述】:

我试图在 android 中使用 XML 制作可绘制对象。要求是我需要一个圆角矩形(所有 4 个角都是圆角的),仅在顶部边缘具有 7dp 高度的笔划。为此,我正在使用以下 XML:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <stroke android:width="5dp" android:color="@color/theme_color" />
            <solid android:color="@color/theme_color" />
            <corners
                android:radius="7dp"/>
            <padding android:top="7dp"/>
        </shape>
    </item>

    <item>
        <shape
            android:shape="rectangle">
            <stroke android:width="1dp" android:color="@color/designer_cell_background" />
            <solid android:color="@color/designer_cell_background" />
            <corners
                android:radius="7dp"
                android:topRightRadius="0dp"
                android:topLeftRadius="0dp"/>
            <padding android:bottom="1dp"/>
        </shape>
    </item>
</layer-list>

除了底部右下角和底部左角没有圆角之外,我几乎可以正常工作。

问题 - 1:如何使底角变圆?

问题 - 2:这是实现我真正想要的正确方法吗?有没有更好的办法?我问这个是因为,我知道我在这里所做的实际上是制作两个矩形,一个在另一个之上,第二个从第一个矩形的顶部边缘略微降低,以便第一个矩形的颜色显示为行在第二个之上。然后分别为每个矩形添加角半径。我认为这不是正确的解决方案。但是当我尝试在圆角矩形的顶部添加 7dp 宽度的笔画时失败了。我给的笔画出现在所有边缘。

编辑

这就是我想要的:

这是我目前得到的:

【问题讨论】:

  • 你可以发布你想要的图片吗??

标签: android xml drawable android-drawable xml-drawable


【解决方案1】:

        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />

        <solid android:color="#ffffff" />

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

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

    </shape>

你使用半径值增加曲线形状会增加

【讨论】:

  • 不..我只需要在顶部边缘进行笔划,而不是在所有边缘。
  • 如果您只需要在顶部边缘进行描边,则它不再是矩形,而是一条水平线
  • 使用九个补丁可绘制
  • @pskink 你的意思是没有办法得到一个简单的drawable,它包含一个圆角矩形,上面有一条线,除了使用9patch drawable?
  • @HarikrishnanT 当然不,例如,您可以使用带有自定义形状的 ShapeDrawable
【解决方案2】:

试试这个效果告诉我

这个工具对我有帮助,你也可以从中获得帮助

http://angrytools.com/android/button/

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <stroke android:width="5dp" android:color="@color/theme_color" />
        <solid android:color="@color/theme_color" />
        <corners
            android:radius="7dp"/>
        <padding android:top="7dp"/>
    </shape>
</item>

<item>
    <shape
        android:shape="rectangle">
        <stroke android:width="1dp" android:color="@color/designer_cell_background" />
        <solid android:color="@color/designer_cell_background" />

       <corners
           android:topLeftRadius="0dp"
           android:topRightRadius="0dp"
           android:bottomLeftRadius="7dp"
           android:bottomRightRadius="7dp"/> 

        <padding android:bottom="1dp"/>
    </shape>
</item>

【讨论】:

  • 您提供的链接似乎仅有助于制作基本的可绘制按钮。它无法根据我的需要进行定制。
  • @HarikrishnanT 使用九个补丁可绘制
  • @HarikrishnanT,实际上可以。按钮只是一个视图减去几个属性。删除这些属性,重命名它使用的父类,代码就可以正常工作了。当然,你的应用看起来像 iPhone 应用,因为布局周围的圆角与 Android UI 设计指南相矛盾,但我想这就是你想要的。
【解决方案3】:

我认为您应该创建 2 个形状,一个黑色和一个红色,只需覆盖另一个形状即可成为您正在寻找的图像。你无法在 android 中使用一种形状来实现这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多