Android: добавление компонентов в RelativeLayout

#android

#Android

Вопрос:

на моем экране я хочу, чтобы вверху был Hearder (в частности, image) и List, а внизу я хочу иметь маленькие кнопки imagebuttons (например, youtube, facebook).

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

мой файл макета выглядит следующим образом

 <RelativeLayout>
    <image></image>
    <ListView></ListView>
    <RelativeLayout>
        <ImageButton></ImageButton>
    </RelativeLayout>
</RelativeLayout>
  

Комментарии:

1. пожалуйста, опубликуйте свой XML-код. Его все еще не видно.

Ответ №1:

В RelativeLayout имеет значение, в каком порядке вы добавляете дочерние представления (поскольку последние могут быть привязаны к ранее добавленным).
Я думаю, что это проблема в вашем макете, у вас уже есть fill_parent / match_parent верхний вид внутри ( ListView ), и там нет места для нижнего колонтитула.

Вам следует изменить порядок ваших представлений внутри RelativeLayout :

  1. сначала вы должны добавить представление заголовка (и привязать его к началу: android:align_parent_top="true" ), затем
  2. нижний колонтитул с кнопками (и привязать его к низу: android:align_parent_bottom="true" ), и
  3. ListView которые должны заполнить пустое пространство, войдут в качестве третьего вида с android:layout_below="header_view" и adroid:layout_above =»footer_view»`

Тогда ваш макет будет выглядеть:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout>
    <image android:id="@ id/header" 
        android:layout_alignParentTop="true"></image>
    <RelativeLayout android:id="@ id/footer"
        android:layout_alignParentBottom="true">
        <ImageButton></ImageButton>
    </RelativeLayout>
    <ListView
        android:layout_below="@id/header" 
        android:layout_above="@id/footer"></ListView>
</RelativeLayout>