web-dev-qa-db-ja.com

Android-ドローアブルリソースの画像を表示する方法は?

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";

}
10
Yanny

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"/>
32
Damian

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);
6
CoderDecoder

これを表示する非常に簡単な方法は、これをxmlのImageViewウィジェットに書き込むことです。

Android:background="@drawable/your_file_name"

...そして、その画像ファイル(pngまたはjpgなど)をドローアブルフォルダーに入れていることを確認してください。あなたが書くときyour_file_name、必要なのはタイトルだけで、ファイル拡張子は必要ありません。

(上記の他の回答で示されているように)プログラムで.Javaファイルに書き込むよりもこの方法を好みます。xmlではプレビューで画像が表示されますが、プログラムでは表示されず、ImageViewプレースホルダーが表示されるだけです。

1
Azurespot

最も簡単な方法-以下のコードを検討することができます

Imageview setImageResourceを利用できます。以下のコードを参照してください。以下の順序のようにドローアブルに画像を入れます

image_1.png、image_2.pngなど.

int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName());
             imageview.setImageResource(resId);
0
Lakshmanan
  Drawable drawable = getResources().getDrawable(R.mydrawableID);

これで、次のようにイメージとして使用できます:-

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

今これを発射-

myImage.setImageResource(drawable);
0
Amit Sharma