【问题标题】:Xamarin Android Support Library 23.4.0.1 (Vector Drawables)Xamarin Android 支持库 23.4.0.1(矢量绘图)
【发布时间】:2016-07-22 11:00:24
【问题描述】:

在尝试设置 EditText 的复合可绘制对象(可绘制左侧)时,我在 Android 4.3 上使用矢量可绘制对象时遇到了问题。我将 ic_mobile.xml (svg) 包裹在状态列表中。

这适用于 Android 5.0 + 。它曾经在4.3上工作。但它最近停止工作。我知道 Android 禁用了 Vector drawables,你必须手动重新启用它们

AppCompatDelegate.CompatVectorFromResourcesEnabled = true;

但我仍然看到这个错误

Invalid drawable tag Vector.

我错过了什么吗?

【问题讨论】:

    标签: android xamarin android-support-library android-vectordrawable


    【解决方案1】:

    这是一个非 Xamarin 的答案,希望对您有所帮助。创建可绘制对象时,将其创建为VectorDrawable。现在,要支持旧平台 (4.3),您可以使用 VectorDrawableCompat.create(...)。不要尝试创建普通的可绘制对象,因为正如错误中所述,并非所有 SDK 都支持标签 <vector>。 不幸的是,我不知道 Xamarin 中的等效类是什么,但从这里获取应该相当简单。

    【讨论】:

    • 谢谢!这就是我最终做的。但帐篷已关闭...我使用的是黑色矢量图像。当我通过 xml 对其进行着色时,着色颜色已正确应用,但是当我通过代码对其进行着色时,它会将其添加到黑色上。有什么提示吗?可能与色调模式有关..
    • 没有提示,因为我不知道你是如何着色的 :-) 分享一些代码?
    【解决方案2】:

    我通过在代码中做所有事情来解决这个问题

    private VectorDrawableCompat _phoneVectorDrawable;
    _phoneVectorDrawable = VectorDrawableUtil.GetTintedDrawable(Resources, Resource.Drawable.ic_mobile, _tintColor_darkColor, Theme); 
    

    其中 ic_mobile 是矢量可绘制对象 (.xml)

    您可以像这样将它用作复合可绘制对象

     _EditTextMobileNumber.SetCompoundDrawablesWithIntrinsicBounds(_phoneVectorDrawable, null, null, null);
    

    已在 Android 4.3 至 6.0 上测试并运行。我认为这是 Xamarin 特有的问题。

    【讨论】:

    • 将 Xamarin 支持库升级到 25.1.1 为我解决了这个问题。
    • @LukePothier 很高兴你把它整理好了!我会升级和测试!欢呼
    猜你喜欢
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    相关资源
    最近更新 更多