Макет Android ExpandableListAdapter View не отображается должным образом :-(

У меня есть макет XML для представления, представляющего один элемент, отображаемый ExpandableListAdapter. (XML, который дублируется один раз для каждого элемента списка, а не основного макета действия). Сначала я попробовал LinearLayout, но он скрыл последний из трех виджетов (кнопку с изображением). Я понимаю, почему это не работает, но затем я попробовал RelativeLayout, но текстовое представление не отображается.

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

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="55dip"
    android:orientation="horizontal" >
    <CheckBox
        android:id="@+id/chkParent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:checked="false"/>
    <EditText
        android:id="@+id/edtParent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/chkParent"
        android:textSize="17dip"
        android:inputType="text"
        android:hint="@string/strItem"/>
     <ImageButton
        android:id="@+id/btnExpand"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toLeftOf="@id/edtParent"
        android:src="@drawable/dark_expand"
        android:clickable="true"
        android:hint="@string/strViewSubItems"
        android:contentDescription="@string/strViewSubItems"
        android:background="@null"/>  
 </RelativeLayout>

скриншот относительного макета

Оригинальная линейная планировка:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="55dip"
    android:orientation="horizontal" >
    <CheckBox
        android:id="@+id/chkParent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"/>
    <EditText
        android:id="@+id/edtParent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="17dip"
        android:inputType="text"
        android:hint="@string/strItem"/>
    <ImageButton
        android:id="@+id/btnExpand"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/dark_expand"
        android:clickable="true"
        android:hint="@string/strViewSubItems"
        android:contentDescription="@string/strViewSubItems"
        android:background="@null"/>  
 </LinearLayout>

снимок экрана для линейного макета


person Geeks On Hugs    schedule 13.08.2012    source источник


Ответы (1)


Почти уверен, что ваши атрибуты toLeftOf должны быть атрибутами toRightOf. Дайте этому шанс и посмотрите, что произойдет.

На самом деле, ваш EditText должен быть установлен toRightOf="@id/chkParent" и toLeftOf="@id/btnExpand. Ваш ImageButton даже не нуждается в модификаторе toRightOf, его должен покрывать атрибут alignParentRight.

person Kevin Coppock    schedule 13.08.2012
comment
Дох... это был мозговой пердеж на toLeftOf, я снова собирал его вместе, когда публиковал его... но да, текст редактирования со свойствами слева и справа исправил это... это заставило меня поместите кнопку изображения в качестве второго элемента, а редактирование последним, потому что я предполагаю, что компилятор, по-видимому, делает только один проход по XML? - person Geeks On Hugs; 14.08.2012
comment
О, есть способ обойти это, просто используйте @+id/ вместо @id/, когда вы ссылаетесь на один дальше в XML, и вы сможете сохранить его в порядке. По сути, вы просто используете + при первой ссылке на идентификатор в XML, независимо от того, устанавливаете ли вы идентификатор или просто ссылаетесь на него. - person Kevin Coppock; 14.08.2012
comment
О, классно! Хорошо знать. Спасибо за помощь, как всегда, брат! :-) - person Geeks On Hugs; 14.08.2012