圆角ImageView半径与可绘制半径不匹配

问题描述 投票:0回答:2

我有一个自定义类,可以圆化图像的左上角和右下角,其中半径在 dimens.xml 中定义为 50dp。角看起来很整洁,但我需要在其上应用各种状态,例如当用户按下图像时需要边框。

我的问题是我在圆形图像顶部应用的可绘制对象显示的半径与我的剪切图像的半径不同,即使它们使用相同的半径属性也是如此。

Red area shows radius mismatch

以前有人遇到过这个问题吗?如果有的话,你是如何克服这个问题的?

作为额外说明,其背后的背景可以是动态的(图像或颜色),因此在这种情况下简单地在边框周围应用颜色是行不通的。

感谢您的宝贵时间。

罗布。

android xml imageview android-drawable
2个回答
0
投票

可绘制半径似乎受到笔划粗细的影响。 下面的图层列表显示了两条不同的曲线,即使它们具有相同的半径

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
            <corners
                android:topLeftRadius="75dp"
                android:topRightRadius="0dp"
                android:bottomLeftRadius="0dp"
                android:bottomRightRadius="0dp"
                />
            <size
                android:width="200dp"
                android:height="200dp" />
            <stroke
                android:width="1dp"
                android:color="#00FF00"
                />
        </shape>
    </item>
    <item >
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
            <corners
                android:topLeftRadius="75dp"
                android:topRightRadius="0dp"
                android:bottomLeftRadius="0dp"
                android:bottomRightRadius="0dp"
                />
            <size
                android:width="200dp"
                android:height="200dp" />
            <stroke
                android:width="8dp"
                android:color="#BC9611"
                />
        </shape>
    </item>
</layer-list>

0
投票

您可以尝试使用ShapeableImageView。它允许您圆角并添加匹配的轮廓。这是一个很好的教程

© www.soinside.com 2019 - 2024. All rights reserved.