我在我的imageView和Edittext
中应用vectordrawable时遇到问题这是我尝试修复问题
首先 我正在使用Xamarin.Android.Support.Vector.Drawable版本23.4.0
第二次 我在应用程序的onCreate中添加AppCompatDelegate.CompatVectorFromResourcesEnabled = true;
public class MyApplication : Application
{
public MyApplication(IntPtr handle, JniHandleOwnership ownerShip) : base(handle, ownerShip)
{
Log.Debug("App", "I am in oncreate application");
}
public override void OnCreate()
{
base.OnCreate();
AppCompatDelegate.CompatVectorFromResourcesEnabled = true;
}
}
*第三次* 使用AppCompatActivity
确保我的活动使用AppCompatImageView而不是普通ImageView
并尝试手动设置drawable但它返回null(I不知道为什么会发生这种情况)
[Activity( Label = "Activity1", Theme = "@style/AppTheme")]
public class Activity1 : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.test);
ImageView testImage = FindViewById<ImageView>(Resource.Id.imageViewTest);
Drawable drawable = VectorDrawableCompat.Create(Resources, Resource.Drawable.ic_arrow_back_white_24dp, null);
testImage.SetImageDrawable(drawable);
}
}
我的项目中的 第四 .csproj我添加了构建工具版本23.0.3
<AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion>
这是我的完整文件内容
?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AndroidSdkBuildToolsVersion>23.0.3</AndroidSdkBuildToolsVersion>
<AndroidDesignerPreferredDevice>Nexus 4</AndroidDesignerPreferredDevice>
<SelectedDevice>Nexus_5_API_21_x86</SelectedDevice>
<AndroidDesignerPreferredTheme>Theme.DeviceDefault</AndroidDesignerPreferredTheme>
</PropertyGroup>
</Project>
第五我引用了我的矢量图像app:srcCompat
但它仍然无法正常工作可以帮助我解决这个问题
答案 0 :(得分:1)
我解决了我的问题的前半部分简单更新到
Xamarin.Android.Support.Vector.Drawable Version 23.4.0.1
确保以这种方式引用矢量图像app:srcCompat
与EditText Image相关我认为你不能从xml设置它你需要通过代码使用它这里是方法
SetCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom);
在我的情况下,我使用了leftdrawable,所以我的方法看起来像
SetCompoundDrawablesWithIntrinsicBounds(Resource.Drawable.MyDrawable, 0, 0, 0);
希望这有助于任何人面对同样的问题
答案 1 :(得分:0)
更新:忘记旧解决方案。只需更新到最新的Verison of Xamarin(Xamarin.Android 7.2.0.7)和最新版本的支持库(25.3.1)。
降级到Xamarin 4.2.0.680,仅使用支持库版本23.3.0(Android 4.4.4上的最新稳定24.2.1崩溃,但适用于Android 6)
同时确保:
将此静态构造函数放入Activity:
static Activity1()
{
AppCompatDelegate.CompatVectorFromResourcesEnabled = true;
}
或者将AppCompatDelegate.CompatVectorFromResourcesEnabled = true;
添加到您的Application班级OnCreate
方法中。
<AndroidSdkBuildToolsVersion>
不再是必须的了。
使用app:srcCompat
,就像您已经做的那样。
我有:
同时请确保您引用Java.Interop.dll
尝试另一个矢量drawable,例如来自Material Design Icons(点击图标,选择图标包, .XML Vector Drawable )。