11

我无法显示保存在 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”文本的小方块。那么有什么问题呢?图像无法读取或其他?如何显示图像?

老实说,我在 Google 上搜索了很多,也尝试了 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";

}
4

6 回答 6

36

2016 年 12 月 12 日更新

getResources().getDrawable() 在 api 22 中已弃用,因此您现在应该使用 ContextCompat.getDrawable 例如

Drawable d = ContextCompat.getDrawable(context, R.drawable.smiley);

在您的活动中,您可以调用它来将您的可绘制资源作为可绘制对象

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"/>
于 2011-06-13T20:30:40.717 回答
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);
于 2013-12-05T11:43:00.850 回答
1

显示它的一个超级简单的方法是在你的 xml 中的 ImageView 小部件中写这个:

android:background="@drawable/your_file_name"

...并确保您已将该图像文件(无论是 png 还是 jpg 等)放入您的可绘制文件夹中。写your_file_name的时候,只需要标题,不需要文件扩展名。

我更喜欢这种方式以编程方式写入您的 .java 文件(如上面的其他答案所示),因为您的 xml 会在预览中向您显示图像,而以编程方式不会,它只会显示 ImageView 占位符。

于 2015-01-20T08:35:09.237 回答
0
  Drawable drawable = getResources().getDrawable(R.mydrawableID);

现在您可以将其用作图像,例如:-

ImageView myImage = findViewById(R.id.yourImageView);

现在开火——

myImage.setImageResource(drawable);
于 2019-04-08T10:19:10.930 回答
0

您应该使用ContextCompatAndroid 上的向后兼容功能。

//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);
于 2019-10-14T18:05:26.630 回答
0

最简单的方法 - 可以考虑下面的代码

我们可以利用 Imageview setImageResource ,参考下面的代码。将图像放入drawable中,如下所示

image_1.png、image_2.png 等

int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName());
             imageview.setImageResource(resId);
于 2018-02-01T07:31:14.180 回答