Xamarin Android 圆角边框与彩色 ImageView

Posted

技术标签:

【中文标题】Xamarin Android 圆角边框与彩色 ImageView【英文标题】:Xamarin Android round corner border with color ImageView 【发布时间】:2016-06-15 06:41:35 【问题描述】:

我正在使用 BaseAdapter 以自定义布局呈现 GridView。我的视图在 ImageView 下包含 ImageView 和 TextView。对于 ImageView 我想用黑色设置圆角边框。

我尝试了一些来自社区答案的建议。

    创建带有圆形边框的可绘制对象并将其设置为 ImageView 的背景。 使用另一个虚拟 ImageView 将 ImageView 包装到 FrameLayout 中,该虚拟 ImageView 将用作框架,并将可绘制的边框设置为它的背景。 使用 RoundedBitmapDrawableFactory 创建 RoundedBitmap 并将可绘制的边框设置为背景。

在上述所有情况下,我都没有得到我想得到的效果。 图像边框仅与图像重叠。

在 #3 中,问题是边框和圆角位图角彼此不完全匹配。我不确定如何支持多种屏幕尺寸和密度see here

如果我使用代码创建圆角位图,则存在严重的内存问题: more details, see comments. Further details

对于选项 3 代码:

internal void SetImageWithRoundCorners(int imageResID, Context context)

    Resources res = context.Resources;
    Bitmap src = BitmapFactory.DecodeResource(res, imageResID);
    RoundedBitmapDrawable dr = RoundedBitmapDrawableFactory.Create(res, src);
    dr.CornerRadius = 50.0f;
    ImgTopicIcon.SetImageDrawable(dr);

round_border_corner.xml

<!-- language: lang-xml -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
     <solid android:color="#00ffffff" />
     <padding android:left="2dp"
        android:top="2dp"
        android:right="2dp"
        android:bottom="2dp" />
     <corners android:radius="@dimen/GVImgRoundCornerRad" />
     <stroke android: android:color="#ff000000" />
</shape> 

Grid_Custom_Item.xml

<!-- language: lang-xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_
    android:minHeight="48dp"
    android:gravity="center"
    android:orientation="vertical">
    <FrameLayout
        android:layout_
        android:layout_>
        <ImageView
            android:layout_
            android:layout_
            android:id="@+id/ImgCategoryIcon" />
        <ImageView
            android:src="@drawable/round_corner_border"
            android:layout_
            android:layout_ />
    </FrameLayout>
    <TextView
    android:layout_
    android:layout_
    android:textColor="@android:color/black"
    android:id="@+id/TxtCategoryName"
    android:gravity="center" />
</LinearLayout>

预期结果: http://screencast.com/t/6hd8moeTgqAQ

输出: http://screencast.com/t/WVgdlyq87IU

任何人都知道如何在没有内存问题的情况下实现所需的输出。

【问题讨论】:

【参考方案1】:

您可以定义一个自定义的 ImageView 来在图像上添加颜色边框;这是我多年前的一个项目,它是一种适用于 Android 操作系统的圆形图像小部件。

https://github.com/avenwu/IndexImageView

【讨论】:

以上是关于Xamarin Android 圆角边框与彩色 ImageView的主要内容,如果未能解决你的问题,请参考以下文章

怎么给android 边框设置成圆角的

android设置控件样式(边框颜色,圆角)和图片样式(圆角)

android 圆角边框 阴影边框怎么设置

Android 对控件设置边框样式(边框颜色,圆角)和图片样式(圆角)

Android:如下关于绘制圆角矩形边框问题,怎么解决?

Android 圆角View设置 圆角边框