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」というテキストが表示された小さな四角形です。では、何が問題なのですか?画像が読めないのか、それとも何か?画像を表示するには?

正直なところ、私は多くのことをグーグルで検索し、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 リソースを Drawable オブジェクトとして取得できます

Drawable d = getResources().getDrawable(R.drawable.smiley);

ドローアブルを ImageView に表示したい場合は、次のようにします。

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 に答える