首页 > 解决方案 > ImageView.SetFrame(int, int, int, int)' 由于其保护级别而无法访问

问题描述

using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
using NativeUiLib;
using Android.Graphics;

namespace Graf
{
    public class Program
    {
        public LinearLayout lin = new LinearLayout();
        public int screenWidth = 1080;
        public int screenHeight = 1920;

        public ImageView pic;

        public void Main()
        {
            Ui.RunOnUiThread(() => MainUi());

        }

        public void MainUi()
        {
            var slider = lin.AddSeekBar(true);
            slider.Max = 540;
            slider.Min = 1;
            pic = lin.AddImageView(true);
            pic.SetY(screenHeight / 2 - screenWidth / 2);
            pic.SetFrame(0, 200, 1080, 1280);
            lin.Show();

            slider.ProgressChanged += (e, s) =>
            {
                pic.SetImageBitmap(CreateImg(slider.Progress));
            };
        }

        private Bitmap CreateImg(float r)
        {
            Bitmap bitmap = Bitmap.CreateBitmap(1080, 1080, Bitmap.Config.Rgb565);
            Paint paint = new Paint();
            paint.SetARGB(255, 255, 0, 0);
            Canvas canvas = new Canvas(bitmap);
            canvas.DrawARGB(255, 255, 255, 255);
            canvas.DrawCircle(bitmap.Width / 2, bitmap.Height / 2, r, paint);
            canvas.DrawBitmap(bitmap, 0, 0, paint);
            return bitmap;
        }
    }
}

(31, 8): 'ImageView.SetFrame(int, int, int, int)' 由于其保护级别而无法访问

我正在学习 c# xamarin android。我遇到了这个问题,试图编辑 ImageView 对象的大小和位置。有人可以解释吗?

标签: c#androidcompiler-errors

解决方案


setFrame是 ImageView 中的受保护方法,这意味着它只能被 ImageView 本身或继承自它的类访问。这就是编译器告诉您该方法不可访问的原因。

如果您想以编程方式设置 ImageView 的大小,您应该考虑使用其布局参数(或其父参数),如本问题中所述


推荐阅读