Добрый день, дроиды!
Я столкнулся с досадной проблемой компоновки, которой у меня нет объяснений после нескольких часов и часов исследования ...: /. Я создал сокращенный тестовый пример, который я представляю здесь.
У меня есть простой макет элемента списка.
элемент списка http://www.freeimagehosting.net/4075a.jpg
ссылка на изображение элемента lis
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="96dp">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:id="@+id/textView1" android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_centerVertical="true" android:layout_centerHorizontal="true" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="TextView"
android:id="@+id/textView2" android:layout_alignParentTop="true" />
<ImageView
android:layout_width="10dp"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:src="@drawable/errorindicator"
android:layout_below="@id/textView2" />
</RelativeLayout>
Указатель ошибки представляет собой красный прямоугольник, который вы видите на изображении с левой стороны.XML выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<shape shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/ControllingConflictColor" />
<padding android:left="0dp" android:top="0dp"
android:right="0dp" android:bottom="0dp" />
</shape>
Описанный макет элемента списка работает, как и ожидалось.
Теперь я пытаюсь заполнить представление списка элементами списка как описано выше.Результат выглядит так:
представление списка с элементами списка http://www.freeimagehosting.net/4cc4b.jpg
ссылка на изображение представления списка
Соответствующий xml:
<?xml version="1.0" encoding="utf-8"?>
<ListView android:id="@+id/listView1" android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Preview: listitem=@layout/test -->
</ListView>
Как вы можете видеть на изображении, красный прямоугольник больше не соответствует его родителю по высоте. Изображения сделаны из конструктора, но тот же эффект также включенэмулятор и устройство.Я занимаюсь разработкой для API уровня 8.
** Мне бы очень хотелось, если бы кто-нибудь мог объяснить мне, почему описанный макет не работает, как ожидалось в представлении списка.Почему форма рисования ведет себя иначе?**
Спасибо за потраченное время:)
edit: у меня проблемы с встраиванием изображения, вместо этого я использовал ссылку, извините; (edit: добавлен тег xml-drawable.
edit: Мой пример может быть даже намного проще. Я включил два текстовых представления, потому что оно имеет некоторое сходство с моим реальным макетом. Вы можете удалить два текстовых представления из примера, и он все еще существуетпроблема в том, что форма, отображаемая в представлении изображения, не соответствует высоте родителей, как определено, если макет используется в представлении списка.