Не удается установить изображение из ресурса в пользовательский ImageView в Xamarin Android? - PullRequest
0 голосов
/ 25 ноября 2018

Я могу установить изображение в нестандартном ImageView, но не могу установить изображение в Custom ImageView, приложение загружается успешно, но не видит Image, ниже приведен код.

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 голосов
/ 26 ноября 2018

Обновление

В конце концов, добавление фонового изображения через 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);

Вернуть в случае, если это не работает или в случае запросов

0 голосов
/ 26 ноября 2018

1. Прежде всего, вы ничего не делаете в пользовательском ImageTestView классе.

2. И установка изображения на ресурс неверна. Либо вам нужно взять из папки Drawable, так и должно быть.

imageView.SetImageResource(Resource.Drawable.line_indent);

Я не знаю, в Xamarin Android. Но если вы знаете, Android, пожалуйста, обратитесь к этому примеру. Этот бит похож на xamarin Android

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

...