невозможно установить изображение при раздувании макета на Android

#android #xml #image #layout #bitmap

#Android #xml #изображение #макет #растровое изображение

Вопрос:

Я пытаюсь добавить небольшое изображение в строку моего расширяемого списка. Ниже вы можете увидеть код метода getchildview моего пользовательского адаптера. Он отлично работает для настройки динамического текста, но терпит неудачу, когда я хочу добавить изображение.

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

Я не получаю никаких ошибок во время выполнения, просто изображения не загружены. Более того, я знаю, что, по крайней мере, «setImageBitmap» работает, потому что я успешно использую его в других местах.

Изображения, на которые ссылаются, представляют собой файлы png размером 9×10.

Пожалуйста, помогите мне, потому что я не думаю, что мне чего-то не хватает, но изображения вообще не отображаются.

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

 public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
        RelativeLayout l = (RelativeLayout) getLayoutInflater().inflate(R.layout.titoli2_gruppo_riga, null)
        String s;
        s=prodotti.get(groupPosition).get(childPosition)[DSP];
        Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.disponibile);
        if(s.equals("true"))                    
            ((ImageView) l.findViewById(R.id.tgr_dispon)).setImageBitmap(bm);
        else
            ((ImageView) l.findViewById(R.id.tgr_dispon)).setImageResource(R.drawable.nondispon);           
        ((TextView) l.findViewById(R.id.tgr_descr)).setText(prodotti.get(groupPosition).get(childPosition)[DES]);
        ((TextView) l.findViewById(R.id.tgr_prezz)).setText("€" prodotti.get(groupPosition).get(childPosition)[PRE]);
        ((TextView) l.findViewById(R.id.tgr_note)).setText(prodotti.get(groupPosition).get(childPosition)[NOT]);                
        ((TextView) l.findViewById(R.id.tgr_sigla)).setText(prodotti.get(groupPosition).get(childPosition)[SIG]);


        return l;
}
  

Вы можете увидеть XML, который я раздуваю, здесьhttp://pastebin.com/DwxdxJSK

Ответ №1:

Вы проверили свой графический макет в вашем XML-файле, изображение не отображается в вашем графическом макете из TextView with id as tgr_descr is given match_parent за того, что вы Imageview не видны.

Для проверки того, видно ли изображение, просто используйте android:src="@drawable/icon"

Попробуйте этот код :

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="horizontal"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent" android:weightSum="1">
<ImageView      android:id="@ id/tgr_dispon"  android:layout_height="wrap_content"
                android:layout_width="wrap_content" android:layout_toLeftOf="@ id/tgr_descr"
                android:layout_alignParentLeft="true" android:paddingLeft="7dp"
                android:src="@drawable/icon"/>
<TextView       android:id="@ id/tgr_descr" android:layout_height="wrap_content"
                android:layout_width="wrap_content"  android:layout_alignParentTop="true"
                android:layout_toLeftOf="@ id/tgr_prezz" android:text="descr"
                android:textAppearance="?android:attr/textAppearanceMedium" android:padding="7dp"/>

<TextView       android:id="@ id/tgr_prezz" android:layout_height="wrap_content"
                android:layout_width="wrap_content" android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"  android:text="prezzo"
                android:textAppearance="?android:attr/textAppearanceMedium" android:padding="7dp"/>

<TextView       android:id="@ id/tgr_note" android:layout_height="wrap_content"
                android:layout_width="wrap_content" android:layout_below="@ id/tgr_descr"
                android:layout_alignParentLeft="true" android:text="note"
                android:textAppearance="?android:attr/textAppearanceSmall" android:paddingLeft="7dp"/>
<TextView       android:id="@ id/tgr_sigla" android:layout_height="wrap_content"
                android:layout_width="wrap_content"  android:layout_toRightOf="@ id/tgr_note"
                android:layout_below="@ id/tgr_descr" android:layout_alignParentRight="true"
                android:text="sigla" android:textAppearance="?android:attr/textAppearanceSmall"
                android:paddingLeft="7dp"/>
</RelativeLayout>
  

Комментарии:

1. Я проверю ваше предложение. я скоро вернусь

2. в любом случае ваше указание было полезным, сейчас я повторно тестирую свой XML блок за блоком, чтобы найти скрытый компонент 🙂

3. @STTLCU я проверил.. Это работает.. Назначьте строку s =»true» и попробуйте получить статическое значение

4. конечно, я полностью удалил часть проверки строки, чтобы попробовать код 🙂

5. @STTLCU В вашем графическом макете возможно ли просмотреть ваше изображение?