从资产文件夹设置LinearLayout的backGround图像时遇到问题。
String filePath="file:///android_asset/images/test.png";
Drawable d = Drawable.createFromPath(filePath);
frontTextView.setBackgroundDrawable(d);
有人可以帮助我。
答案 0 :(得分:18)
好的,如果其他人偶然发现这个问题,你想要从资产中的图像设置视图的背景:
Drawable d = Drawable.createFromStream(getAssets().open(path_in_assets), null);
然后将其设置为某些仅支持Drawables作为背景的视图。
答案 1 :(得分:8)
据我所知,you cannot access assets directly就像你想要的那样。如果要将其存储为资产,则需要使用AssetManager类来获取数据。 Here's a pretty decent blog post解释了一些资源和资产,当然官方文档也是一个很好的资源。
我还要补充一点,背景图片等内容通常最好存储在res/drawable
中,并使用R.drawable.*
样式进行访问(上面链接的博客文章也会讨论此内容)。现在还不清楚为什么你需要从提供的代码示例中这样做,所以我想这最终是你的呼唤。
答案 2 :(得分:2)
编辑:从InputStream添加了创建图片...
我使用ImageButton遇到了类似的问题。我通过从资源加载位图并将其用作ImageButton的图像来计算出来。可能不是一个好的方法,但正在工作并解决了我的问题 - 无法在drawable dir中使用子文件夹而且文件名中不允许使用字符。
(是的,我可以使用前缀而不是subdir,并重命名文件以匹配模式(仅限小写和数字),我可能稍后会这样做。)
InputStream is = null;
try {
is = this.getResources().getAssets().open("Images/Fruits/Apple.png");
} catch (IOException e) {
Log.w("EL", e);
}
Bitmap image = BitmapFactory.decodeStream(is);
ImageButton ib2 = (ImageButton) findViewById( R.id.imageButton2);
ib2.setImageBitmap( image);