我在assets文件夹中有一个子文件夹,其中包含一些xml布局(只是简单的形状。)我的目标是能够创建一个Drawable对象作为视图的背景。目前它只是简单的形状,但最终会有很多形状。我不想使用资源区域有几个原因(没有子文件夹,不想要硬编码资源路径,等等。)
适用于image drawables的普通代码使用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;
}
答案 0 :(得分:0)
事实证明,出于性能原因,您无法执行此操作:
https://developer.android.com/reference/android/view/LayoutInflater.html
出于业绩原因,观点通胀严重依赖 在构建时完成的XML文件的预处理。因此,它 目前无法将LayoutInflater与XmlPullParser一起使用 在运行时通过纯XML文件;它只适用于XmlPullParser 从已编译的资源(R.something文件)返回。
这与使用XmlPullParser
有关,这是我最终尝试的结果(由于同样的原因,来自流的创建并不起作用。)