无法在Xamarin Android中将图像从资源设置为自定义ImageView?

时间:2018-11-25 16:09:38

标签: android android-activity view xamarin.android imageview

我能够在非自定义ImageView中设置图片,但无法在Custom ImageView中设置图片,应用加载成功,但看不到Image,下面是代码。< / p>

public class MainActivity : AppCompatActivity
{


    public ImageTestView imageView;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.activity_main);
        imageView = FindViewById<ImageTestView>(Resource.Id.imageView1);
        imageView.SetImageResource(Resource.Mipmap.line_indent);

    }
}

<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
   <ImageViewTestProject.ImageTestView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:id="@+id/imageView1" />


</RelativeLayout>

public class ImageTestView : ImageView
{
    public ImageTestView(Context context,IAttributeSet attr) :
        base(context,attr)
    {

    }
}

2 个答案:

答案 0 :(得分:1)

更新

最后,通过XML添加图像背景最终解决了该问题。

android:background="@mipmap/imagename"

好吧,我认为它不起作用的原因是构造函数不可用和初始化不正确的原因

  public class ImageTestView : ImageView
  {
    Context mContext;
    public ImageTestView (Context context) : base(context)
    {
        init(context, null);
    }

    public ImageTestView (Context context, Android.Util.IAttributeSet attrs) : base(context, attrs)
    {
        init(context, attrs);
    }

    public ImageTestView (Context context, Android.Util.IAttributeSet attrs, int defStyleAttr) : base(context, attrs, defStyleAttr)
    {
        init(context, attrs);
    }

    public ImageTestView (Context context, Android.Util.IAttributeSet attrs, int defStyleAttr, int defStyleRes) : base(context, attrs, defStyleAttr, defStyleRes)
    {
        init(context, attrs);
    }

    private void init(Context ctx, Android.Util.IAttributeSet attrs)
    {
        mContext = ctx;
    }
  }

然后在您的应用中使用此自定义图片视图,例如:

<RelativeLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <ImageViewTestProject.ImageTestView
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:id="@+id/imageView1" />
 </RelativeLayout>

然后您可以像这样设置图像资源:

    var imageView = FindViewById<ImageTestView>(Resource.Id.imageView1);
    imageView?.SetImageResource(Resource.Mipmap.line_indent);

在不起作用或查询的情况下返回

答案 1 :(得分:0)

1。首先,您没有在自定义的 ImageTestView 类中执行任何操作。

2。并且设置图像资源是错误的。您必须从Drawable文件夹中获取它。

imageView.SetImageResource(Resource.Drawable.line_indent);

我不了解Xamarin Android。但是,如果您知道Android,请参阅此示例。它与xamarin Android有点相似

http://www.java2s.com/Code/Android/UI/extendsImageView.htm