Запретить просмотр перекрытий в RelativeLayout

Я пытаюсь разработать приложение для Android, но у меня возникают проблемы с дизайном графического интерфейса. Следующая часть снимка экрана - моя проблема (красные и синие линии были созданы с помощью параметров отладки Android).

my problem

Это код:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/caption"
    android:layout_below="@+id/caption" >

    <ImageButton
        android:id="@+id/button_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/content_edit"
        style="?android:attr/borderlessButtonStyle" />

    <TextView
        android:id="@+id/myText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="@string/num_placeholder"
        android:textAppearance="?android:attr/textAppearanceLarge" />


</RelativeLayout>

Как вы можете видеть, TextView myText перекрывает кнопку ImageButton button_edit. Простым решением было бы использовать LinearLayout вместо RelativeLayout. Проблема в том, что:

  • Мне нужна кнопка редактирования справа.
  • Мне нужен текст, чтобы заполнить остальную часть макета (очевидно, слева от кнопки редактирования)

Я также попытался установить myText layout_width на "fill_parent", но он заполнит весь остальной экран в левой части кнопки редактирования.

Ожидаемое поведение было бы myText, чтобы увеличить его высоту (став двустрочным TextView) вместо перекрытия 'button_edit'

Может ли кто-нибудь мне помочь? Благодаря

Ответ 1

использовать layout_toLeftOf в макете TextView

вот так:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/caption"
android:layout_below="@+id/caption" >

<ImageButton
    android:id="@+id/button_edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_alignParentRight="true"
    android:src="@drawable/content_edit"
    style="?android:attr/borderlessButtonStyle" />

<TextView
    android:id="@+id/myText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:text="@string/num_placeholder"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:layout_toLeftOf="@+id/button_edit" />

Ответ 2

Другой способ - использовать атрибут android: layout_toEndOf

<ImageButton
    android:id="@+id/button_edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_alignParentRight="true"
    android:src="@drawable/content_edit"
    style="?android:attr/borderlessButtonStyle"
    android:layout_toEndOf="@+id/myText" />

<TextView
    android:id="@+id/myText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:text="@string/num_placeholder"
    android:textAppearance="?android:attr/textAppearanceLarge" />