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