我无法显示保存在res / drawable文件夹中的图像。 我使用ImageGetter来做到这一点。代码如下:
ImageGetter imageGetter3 = new ImageGetter() {
public Drawable getDrawable(String source) {
int id=0;
if (source.equals("smiley")) {
id = R.drawable.smiley;
}
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
directions += "Je bent bij lokaal " + vertrek.getNaam() + "\n"
+ "Sta met je rug voor de deur\n"
+ Html.fromHtml("<img src=\"smiley\">", imageGetter3, null) + " Draai naar links\n";
我在屏幕上看到的是一个带有“obj”文字的小方块。 那有什么不对?无法读取图像或其他内容? 如何显示图像?
老实说,我已经搜索了很多并尝试了ImageGetter的其他方法,但是它们似乎都没有用,我也尝试了这些方法,它们不起作用:
ImageGetter imageGetter2 = new ImageGetter() {
public Drawable getDrawable(String source) {
Drawable d = null;
d = Drawable.createFromPath(source);
d.setBounds(0,0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
ImageGetter imageGetter = new ImageGetter() {
public Drawable getDrawable(String source) {
Drawable drawFromPath;
int path = Route.this.getResources().getIdentifier(source, "drawable","com.prj56.tracingapp");
drawFromPath = (Drawable) Route.this.getResources().getDrawable(path);
drawFromPath.setBounds(0, 0, drawFromPath.getIntrinsicWidth(), drawFromPath.getIntrinsicHeight());
return drawFromPath;
}
};
=============================================== ========== if(....){ ImageView iv1 = new ImageView(this); iv1.setImageResource(R.drawable.smiley);
directions += "Je bent bij lokaal " + vertrek.getNaam() + "\n"
+ "Sta met je rug voor de deur\n";
HERE COMES THE IMAGE! BUT HOW TO DO THIS? It's within directions textview...
directions += " Draai naar links\n";
}
答案 0 :(得分:30)
2016年12月12日更新:
getResources()。getDrawable()在api 22中已弃用,因此您现在应该使用ContextCompat.getDrawable,例如。
Drawable d = ContextCompat.getDrawable(context, R.drawable.smiley);
在您的活动中,您可以调用此方法将Drawable资源作为Drawable对象
Drawable d = getResources().getDrawable(R.drawable.smiley);
如果您想在ImageView中显示您的drawable,您可以这样做:
ImageView i = new ImageView(this);
i.setImageResource(R.drawable.smiley);
或在您的xml文件中
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/smiley"/>
答案 1 :(得分:6)
您可以在pImg的帮助下获取图像。基于适配器位置获取作为图像名称的字符串。图像应该出现在可绘制文件夹中。
ImageView prodImg=(ImageView)view.findViewById(R.id.img_proj_name);
String pImg=prod.get(position);
int resID = view.getResources().getIdentifier("@drawable/"+pImg , "drawable", parentView.getContext().getPackageName());
prodImg.setImageResource(resID);
答案 2 :(得分:1)
显示它的一种非常简单的方法是将它写在xml中的ImageView小部件中:
android:background="@drawable/your_file_name"
...并确保您已将该图像文件(无论是png还是jpg等)放入可绘制文件夹中。当您编写your_file_name
时,您只需要标题,而不是文件扩展名。
我更喜欢用这种方式编写你的.java文件(如上面的其他答案所示),因为你的xml会在预览中显示图像,编程不会,它只显示ImageView占位符。
答案 3 :(得分:0)
最简单的方法 - 可以考虑以下代码
我们可以利用Imageview setImageResource,参考下面的代码相同。 将图像放入drawable中,如下面的顺序
image_1.png,image_2.png等
int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName());
imageview.setImageResource(resId);
答案 4 :(得分:0)
Drawable drawable = getResources().getDrawable(R.mydrawableID);
现在您可以将其用作图像,例如:-
ImageView myImage = findViewById(R.id.yourImageView);
现在开枪-
myImage.setImageResource(drawable);
答案 5 :(得分:0)
您应将ContextCompat
用于Android上的向后兼容功能。
//Using ButterKnife
@BindView(R.id.DogImg)
ImageView myImage;
//Or
ImageView myImage = findViewById(R.id.MyImage);
...
Drawable MyImageDrw = ContextCompat.getDrawable(context,R.drawable.myImageOnResources);
myImage.setImageDrawable(MyImageDrw);