Android RelativeLayout fill_parent неожиданное поведение в ListView с переменными высотами строки

Я в настоящее время работаю над маленьким обновлением проекта, и у меня есть проблема с Relative_Layout и fill_parent в представлении списка. Я пытаюсь вставить делитель между двумя разделами в каждой строке, во многом как делитель в журнале вызовов программы набора номера по умолчанию. Я проверил исходный код Android, чтобы видеть, как они сделали это, но я встретился с проблемой при тиражировании их решения.

Для запуска вот, мое расположение объекта строки:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
 android:layout_width="fill_parent" 
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:padding="10dip" 
 android:layout_height="fill_parent" 
 android:maxHeight="64dip" 
 android:minHeight="?android:attr/listPreferredItemHeight">
 <ImageView android:id="@+id/infoimage" 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" 
  android:clickable="true"
  android:src="@drawable/info_icon_big" 
  android:layout_alignParentRight="true" 
  android:layout_centerVertical="true"/>
 <View android:id="@+id/divider" 
  android:background="@drawable/divider_vertical_dark" 
  android:layout_marginLeft="11dip" 
  android:layout_toLeftOf="@+id/infoimage" 
  android:layout_width="1px" 
  android:layout_height="fill_parent"
  android:layout_marginTop="5dip" 
  android:layout_marginBottom="5dip" 
  android:layout_marginRight="4dip"/>
 <TextView android:id="@+id/TextView01" 
  android:textAppearance="?android:attr/textAppearanceLarge"
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:layout_centerVertical="true" 
  android:layout_toRightOf="@+id/ImageView01" 
  android:layout_toLeftOf="@+id/divider"
  android:gravity="left|center_vertical" 
  android:layout_marginLeft="4dip" 
  android:layout_marginRight="4dip"/>
 <ImageView android:id="@+id/ImageView01" 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content" 
  android:layout_alignParentLeft="true" 
  android:background="@drawable/bborder" 
  android:layout_centerVertical="true"/>
</RelativeLayout>

Проблема, с которой я сталкиваюсь, - то, что каждая строка имеет миниатюру переменной высоты (ImageView01). Если я установил layout_height свойство RelativeLayout на fill_parent, делитель не масштабируется вертикально для заполнения строки (это просто остается точкой на 1 пкс). Если я установил layout_height на"? android:attr/listPreferredItemHeight", делитель заполняет строку, но уменьшение миниатюр. Я сделал некоторую отладку в getView () метод адаптера, и кажется, что высота делителя не устанавливается правильно, после того как строка имеет, это - надлежащая высота.

Вот является часть getView () методом:

public View getView(int position, View view, ViewGroup parent) {
            if (view == null) {
                view = inflater.inflate(R.layout.tag_list_item, parent, false);
            }

Остальная часть метода просто устанавливает соответствующий текст и изображения для строки.

Кроме того, я создаю объект инфлятора в конструкторе адаптера с: inflater = LayoutInflater.from(context);

Я пропускаю что-то существенное? Или разве fill_parent просто не работает с динамическими высотами?

5
задан skaffman 25 June 2010 в 13:22
поделиться

1 ответ

Я подозреваю круговую зависимость в вашем макете. Вы уверены, что хотите, чтобы layout_height строки был fill_parent? Похоже, вы хотите, чтобы строка была той же высоты, что и самое большое подвид (в данном случае @id/ImageView01), поэтому вы хотите, чтобы layout_height="wrap_content" в RelativeLayout. Таким образом, высота будет распространяться от изображения к строке, а затем вниз к другим детям, которые имеют layout_height="fill_parent".

0
ответ дан 14 December 2019 в 13:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: