ImageView не отображается внутри пользовательской строки для просмотра списка

У меня есть xml-файл для макета каждой строки списка. У меня 3 колонки. В первом столбце изображение не отображается, только текст под ним.

Это мой файл row.xml:

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="0dip"
    android:layout_weight="1"  
    android:layout_height="fill_parent">

    <ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:gravity="center_vertical"
    android:layout_weight="1"
    android:src="@drawable/icon" />


     <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:layout_marginTop="5dip"
        android:text="hfghfgh"
    />


</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="0dip"
    android:layout_weight="1"
    android:layout_height="fill_parent">

    <TextView android:layout_height="0dip" 
    android:gravity="center_vertical" 
    android:layout_weight="1" 
    android:text="fghfghfh" 
    android:id="@+id/cena1" 
    android:layout_width="fill_parent"/>

    <TextView
        android:id="@+id/cena2"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:layout_marginTop="5dip"
        android:text="gghj"
        />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" 
        android:id="@+id/razdalja"
        android:text="ghjghjgj"
        android:layout_marginTop="5dip"
        android:gravity="center_vertical"
        />


</LinearLayout>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="0dip"
    android:layout_weight="1"
    android:layout_height="fill_parent">

     <Button 

    android:background="@drawable/call_button"
    android:id="@+id/gumb_klic"        
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"  
    android:layout_gravity="center_horizontal"     
    android:focusable="false"
    android:focusableInTouchMode="false"
        />
    </LinearLayout>

</LinearLayout>

Что я получаю, так это (я рисую IMG, где должно появиться изображение):

введите здесь описание изображения

Любые идеи?


person DixieFlatline    schedule 24.03.2011    source источник


Ответы (4)


Проверьте это для вашего пользовательского списка с изображениями. и текст..

person Venky    schedule 24.03.2011
comment
Я знаю, как его использовать (телефон справа также является изображением, и я показываю правильно), но я предполагаю, что у меня проблемы с макетом внутри одной строки. - person DixieFlatline; 24.03.2011
comment
Изображение IMG у вас не отображается? - person Venky; 24.03.2011
comment
В графическом представлении макета Xml это изображение отображается. Возможно, вы допустили ошибки в файле класса. Проверьте это. - person Venky; 24.03.2011
comment
В графическом редакторе верстки в Eclipse изображение отображается, но текст под ним сжат и его почти не видно. - person DixieFlatline; 24.03.2011
comment
Увеличьте линейную высоту макета. Вместо использования этого android:layout_height=?android:attr/listPreferredItemHeight измените android:layout_height=100dip - person Venky; 24.03.2011

Если вы хотите, чтобы layout_weight для ImageView и TextView учитывался, вам нужно установить layout_height равным нулю. Технически суммы весов также должны составлять 1, если вы также не устанавливаете weight_sum для родителя.

<LinearLayout
    android:orientation="vertical"
    android:layout_width="0dip"
    android:layout_weight="1"  
    android:layout_height="fill_parent">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="0px"
        android:adjustViewBounds="true"
        android:gravity="center_vertical"
        android:layout_weight=".5"
        android:src="@drawable/icon" 
    />

    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight=".5"
        android:gravity="center_vertical"
        android:layout_marginTop="5dip"
        android:text="hfghfgh"
    />
</LinearLayout>
person slund    schedule 24.03.2011
comment
Спасибо за пример кода. Проблема заключалась в том, что у меня не было атрибута android:adjustViewBounds, установленного в true. Когда я установил для ImageView layout_height значение wrap_content, он будет иметь соответствующий размер, но все же заполнит всю высоту экрана при размещении внутри строки таблицы. Большие проблемы! Решено путем добавления android:adjustViewBounds=true к представлению изображения, определенному как: /Просмотр изображения› - person Kevin Parker; 25.05.2011

Я столкнулся с той же проблемой в своем пользовательском макете. Проблема заключалась в родительском макете, в котором сохранялось представление изображений. Я просто изменил линейный макет на относительный и внес некоторые изменения в высоту и ширину, задав некоторое статическое значение, например, высоту = 100dp и ширину = 100dp.

person Rana Ranvijay Singh    schedule 27.02.2014

Если ваша деятельность расширяет AppCompatActivity, вам следует использовать AppCompatImageView вместо обычного ImageView.

person zeroDivider    schedule 22.01.2019