I've create a shape in an xml file. And now I'm trying to bind this shape to an MvxImageView. I've added a converter because I want a different color when it's in a selected state. But when I run my app, no images are shown and I'm getting the following in my application output:
[skia] --- SkImageDecoder::Factory returned null
[skia] --- SkImageDecoder::Factory returned null
[skia] --- SkImageDecoder::Factory returned null
This is the converter I wrote to set another image when in selected state:
public class BoolCircleImageValueConverter : MvxValueConverter<bool, string>
{
protected override string Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
return value ? "res:yellow_circle" : "res:light_grey_circle";
}
}
The MvxImageView with the converter:
<MvxImageView
android:id="@+id/circle"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
local:MvxBind="ImageUrl Selected,Converter=BoolCircleImage;" />
And this is the shape I've created:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
<solid android:color="@color/yellow" />
</shape>
I don't your approach will work - the
res:
scheme in MvvmCross is used to work with bitmaps - see the source in https://github.com/MvvmCross/MvvmCross/blob/900b6dd6a837e97c7204f832c4c6344d05bcf582/Plugins/Cirrious/DownloadCache/Cirrious.MvvmCross.Plugins.DownloadCache.Droid/MvxAndroidLocalFileImageLoader.cs#L35For your particular sample it might be easier to use a custom property or a custom binding - e.g. inherit from Android's
ImageView
and add a property: