Добавление границы в ImageView - PullRequest
1 голос
/ 26 марта 2020

Я использую Xamarin. Android и хочу добавить границу к определенной c стороне ImageView не через xml, а через Activity. Это вообще возможно? И если да, то какой самый эффективный способ? Спасибо.

РЕДАКТИРОВАТЬ

enter image description here

1 Ответ

0 голосов
/ 27 марта 2020

Если вы не используете Xml, вы можете создать пользовательский ImageView для его реализации.

MyImageView :

public class MyImageView : ImageView
{
    public MyImageView(Context context, IAttributeSet attrs) :
        base(context, attrs)
    {
        Initialize();
    }

    public MyImageView(Context context, IAttributeSet attrs, int defStyle) :
        base(context, attrs, defStyle)
    {
        Initialize();
    }

    private void Initialize()
    {

    }

    public override void Draw(Canvas canvas)
    {
        base.Draw(canvas);
        // draw border
        Rect rec = canvas.ClipBounds;
        rec.Bottom--;
        rec.Right--;
        Paint paint = new Paint();
        paint.Color = Color.Red; //set color for stroke
        paint.SetStyle(Paint.Style.Stroke);
        paint.StrokeWidth = 5; // set width for stroke 
        canvas.DrawRect(rec, paint);
    }
}

Используется в xml:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/imageView1" />
<PorjectNameSpace.MyImageView
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageview2"/>

Установить источник изображения:

ImageView imageView = FindViewById<ImageView>(Resource.Id.imageView1);
imageView.SetImageResource(Resource.Mipmap.ic_launcher);

MyImageView myImageView = FindViewById<MyImageView>(Resource.Id.imageview2);
myImageView.SetImageResource(Resource.Mipmap.ic_launcher);

Эффект:

enter image description here

...