我有一个只能在调试模式下工作的转换器。当我生成Release .apk时,它不再起作用了。
这是我的代码:
public class CardapioImageColorConverter : MvxValueConverter<bool, ColorStateList>
{
private static Activity Activity => Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
protected override ColorStateList Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
ColorStateList color;
if (value)
color = Activity.Resources.GetColorStateList(Resource.Color.cor1,Activity.Theme);
else
color = Activity.Resources.GetColorStateList(Resource.Color.white, Activity.Theme);
return color;
}
}
我的斧头:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="70dp"
android:layout_height="70dp">
<Mvx.MvxImageView
android:id="@+id/imageView"
android:layout_weight="1"
android:tint="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
local:MvxBind="ImageUrl Icone;ImageTintList CardapioImageColor(Selecionado);"
android:layout_gravity="center" />
<TextView
local:MvxBind="Text Nome; TextColor CardapioTextColor(Selecionado);"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@color/cor1"
android:textSize="11dp"
android:layout_weight="1.9"
android:text="@string/lista_espera"
android:gravity="center"
android:layout_marginBottom="@dimen/margin_tiny"
android:layout_marginTop="@dimen/margin_tiny" />
</LinearLayout>
它在调试模式下完美运行。你知道为什么会这样吗?
答案 0 :(得分:0)
我刚刚找到了解决方案!
我正在使用链接,因此,转换器无法正常工作,因为链接器已启用。
我将此方法放在名为“LinkerPleaseInclude”的类中。
public void Include(MvxImageView mvxImage)
{
mvxImage.ImageTintList = mvxImage.ImageTintList;
}
此类从未实际执行过,但是当启用Xamarin链接时,它会确保如何确保在已部署的应用程序中保留类型和属性。