我能够在非自定义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)
{
}
}
答案 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有点相似