Android позиционирование просмотров в RelativeLayout

1

У меня есть следующая иерархия представлений:

Изображение 174551

Я хочу, чтобы ScrollView с вложенным RelativeLayout находился между relativeHeader и relativeFooter, , потому что теперь он перекрывается нижним колонтитулом. Но когда я пытаюсь добавить android: layout_above = "@id/relativeFooter", я получил ошибку, что такого вида нет. Возможно, что-то смешное в том, что я делаю. И все это "вложенные релятивизаторы". Но как я могу преуспеть в своей цели? Здесь xml:

<?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="fill_parent"
  android:orientation="vertical">
  <RelativeLayout
    android:id="@+id/relativeHeader"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:orientation="horizontal">
    <ImageView
      android:id="@+id/imgMainLogo"
      android:layout_centerVertical="true"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
    />
     <Button
      android:id="@+id/btnShort"
      android:text="@string/btnShortRemove_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
    />
  </RelativeLayout>
   <ScrollView
    android:id="@+id/scrollContent"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/relativeHeader"
    android:paddingBottom="5dp">
  <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >
    <TextView
       android:id="@+id/tvDetailedTitle"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textSize="20sp"
    />
    <TextView
       android:paddingTop="5dp"
       android:id="@+id/tvDetailedPrice"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/tvDetailedTitle"
    />
    <TextView
       android:paddingTop="5dp"
       android:id="@+id/tvDetailedPhoneTitle"
       android:gravity="center_vertical"
       android:layout_width="fill_parent"
       android:layout_height="22dp"
       android:layout_below="@id/tvDetailedPrice"
    />
    <TextView
       android:paddingLeft="5dp"
       android:paddingTop="5dp"
       android:id="@+id/tvDetailedPhone"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/tvDetailedPhoneTitle"
    />
    <TextView
       android:paddingTop="5dp"
       android:id="@+id/tvDetailedDescriptionTitle"
       android:gravity="center_vertical"
       android:layout_width="fill_parent"
       android:layout_height="22dp"
       android:layout_below="@id/tvDetailedPhone"
    />
    <TextView
       android:paddingTop="5dp"
       android:paddingLeft="5dp"
       android:layout_below="@id/tvDetailedDescriptionTitle"
       android:id="@+id/tvDetailedDescription"
       android:text="Description"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
     />
     <Gallery 
       android:id="@+id/gallery"
       android:layout_below="@+id/tvDetailedDescription"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:paddingTop="5dp"
     />
 </RelativeLayout>
 </ScrollView>
   <RelativeLayout
    android:id="@+id/relativeFooter"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true"
    android:background="#716D69"
    >
    <Button
      android:id="@+id/btnDetailedEmail"
      android:text="@string/btnDetailedEmail_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true"
      android:width="120dp"
    />
     <Button
      android:id="@+id/btnDetailedCall"
      android:text="@string/btnDetailedCall_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:width="120dp"
    />
    </RelativeLayout>

</RelativeLayout>
Теги:
android-layout

1 ответ

3
Лучший ответ
<RelativeLayout
    android:id="@id/relativeFooter"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true"
    android:background="#716D69"
    >

Удалите "+" из android:id="@id/relativeFooter", как указано выше, и сделайте это

<ScrollView
    android:id="@+id/scrollContent"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/relativeHeader"
    android:layout_above="@+id/relativeFooter"
    android:paddingBottom="5dp">
  • 0
    Спасибо, это работает! Но это выглядит необычно для меня. В чем секрет?
  • 3
    «+» обычно используется всякий раз, когда используется новый идентификатор. В вашем случае на id {lativeFooter} ссылались еще до того, как он был объявлен. Еще один способ заставить его работать, это просто переставить макет и поместить нижний колонтитул перед просмотром прокрутки, и макет все равно будет отображаться так, как вы этого хотите.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню