[英]Creating a Drawable from xml file in Assets folder
我在Assets文件夹中有一个子文件夹,其中包含一些xml布局(只是简单的形状。)我的目标是能够创建一个Drawable对象用作视图的背景。 目前,它只是简单的形状,但最终会有很多形状。 由于多种原因,我不想使用资源区域(没有子文件夹,不想对资源路径进行硬编码,等等)。
适用于图像可绘制对象的普通代码对xml文件返回null。 是否有人对如何执行此操作有任何指示? 下面的代码示例。
xml文件:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<stroke android:width="2dp" android:color="#c9c6af" />
<solid android:color="#ffffffff" />
</shape>
用于读取文件的C#代码,与Java非常相似。 是的,我知道我需要关闭InputStream:
public static Drawable GetDrawableFromAsset(Context context, string filePath)
{
AssetManager assetManager = context.Assets;
Stream istr;
Drawable drawable = null;
try
{
istr = assetManager.Open(filePath);
drawable = Drawable.CreateFromStream(istr, null);
}
catch (IOException e)
{
// handle exception
}
return drawable;
}
事实证明,由于性能原因您无法执行此操作:
https://developer.android.com/reference/android/view/LayoutInflater.html
出于性能原因,视图膨胀在很大程度上依赖于在构建时完成的XML文件的预处理。 因此,当前无法在运行时对纯XML文件使用LayoutInflater和XmlPullParser。 它仅适用于从编译资源(R.something文件)返回的XmlPullParser。
这与使用XmlPullParser
,这是我无论如何都要结束的尝试(出于相同的原因,从流创建无效)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.