6

Я не могу показать изображение, которое сохраняется в папке res/drawable. Я использую ImageGetter для этого. Код ниже:Android - Как показывать изображения из доступных ресурсов?

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» текст на нем. Итак, что не так? Изображение нельзя прочитать или что-то еще? Как показать изображения?

Честно говоря, я Googled много и пробовали другие методы 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 = новый ImageView (это); 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

Что означает «показывать изображение»? Где вы хотите это показать? – Egor

ответ

28

Update 12 декабря 2016:.

GetResources() getDrawable() осуждался в апи 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"/> 
+0

Проблема в том, что у меня нет места по умолчанию для объявления ImageView, потому что ImageView необходимо динамически создавать в коде. Основываясь на принимаемых решениях, будут отображаться различные направления, включая изображения. – Yanny

+0

Вы посмотрели на это? http://stackoverflow.com/questions/2865452/is-it-possible-to-display-inline-images-from-html-in-an-android-textview – Damian

+0

Да, конечно, но все равно не работает. Я все равно нашел решение, просто используя SpannableStringBuilder. Это очень простое решение для вставки изображений и текстового просмотра! – Yanny

6

Вы можете получить изображение с помощью pImg.Based в позиции адаптера получите строку, которая является именем изображения. Изображение должно присутствовать в папке с возможностью перемещения.

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); 
+0

Спасибо за идею, очень полезно. –

1

Супер легкий способ показать это, чтобы написать это в ImageView виджета в вашем XML:

android:background="@drawable/your_file_name"

... и убедитесь, что вы поместили файл изображения (будь то PNG или jpg и т. д.) в вашу папку. Когда вы пишете your_file_name, вам нужен только заголовок, а не расширение файла.

Я предпочитаю этот способ программно писать в вашем .java-файле (как показано в других ответах выше), потому что ваш xml покажет вам изображение в предварительном просмотре, программно не будет, он просто покажет место для ImageView.

0

Самый простой способ - Может рассмотреть приведенный ниже код

Мы можем воспользоваться ImageView setImageResource см ниже код для того же. положить изображение в чертеж, как указано ниже.

image_1.png, image_2.png и т. Д.

int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName()); 
      imageview.setImageResource(resId); 
Смежные вопросы