【问题标题】:Android creates radius for rounded corners for smaller shapes only at leftAndroid 仅在左侧为较小形状的圆角创建半径
【发布时间】:2021-08-18 17:58:48
【问题描述】:

我设置了android:radius="20dp",但为什么只在左边圆角?红色形状的右侧也应该有圆角

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#c61b1f" />
            <corners
                android:radius="20dp"/>
            <padding android:left="60dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#eeeeee" />
        </shape>
    </item>
</layer-list>

更新

我想为EditText实现下一个背景

我们可以将width 设置为item(用于第一个左侧形状),但它仅适用于 23+ API,我需要支持 21+

我有 23+ API 的解决方案:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item> 
    // white shape
        <shape android:shape="rectangle">
            <solid android:color="#eeeeee" />
            <corners android:radius="20dp"/>
        </shape>
    </item> 
    // red shape
    <item android:width="60dp">
        <shape android:shape="rectangle">
            <solid android:color="#c61b1f" />
            <corners
                android:radius="20dp"/>
        </shape>
    </item>
</layer-list>

【问题讨论】:

  • 红右角在白哥后面。
  • 去掉白色再检查
  • @MajidAli 更新了问题
  • 为红色添加宽度单独绘制,然后添加此项。
  • 第二个选项 - 从右侧向红色添加填充

标签: android android-drawable layer-list android-shape android-shapedrawable


【解决方案1】:

因为被遮盖而看不见。

<?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="#c61b1f" />
            <corners android:radius="20dp" />
            <padding android:left="60dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#eeeeee" />
            <corners
                android:bottomRightRadius="20dp"
                android:topRightRadius="20dp" />
        </shape>
    </item>
</layer-list>

【讨论】:

  • 红色形状的右边也应该有圆角
  • 你能看看我的效果图吗?是这样吗?
  • 我再次更新了问题,添加了一个适用于 Android 23+ API 的示例解决方案
【解决方案2】:

你可以试试下面的,右边现在也有圆角了。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners
                android:radius="20dp"/>
            <solid android:color="#eeeeee" />
        </shape>
    </item>

    <item android:right="340dp">
        <shape android:shape="rectangle">
            <solid android:color="#c61b1f" />
            <corners
                android:radius="20dp"/>
        </shape>
    </item>
</layer-list>

结果如下

【讨论】:

  • @user924 我已根据您的查询更新了答案
  • 340dp 好像不是很好,我不知道白色背景的宽度,我只能有红色形状的固定尺寸(例如60dp)。我用 EditText 测试了这个背景,只显示了白色形状
  • @user924 我觉得你最好不要覆盖在 XML 布局内的 EditText 上。由于没有分配填充,从右端开始,或者没有指定宽度,层列表的最后一项将始终位于另一个之上。您也可以使用正确的关键字,而不是我觉得稍微好一点的填充,我已经更新了。
猜你喜欢
  • 1970-01-01
  • 2020-10-27
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
相关资源
最近更新 更多