Как получить объявление в нижней части экрана без перекрытия

У меня есть рекламный баннер admob, который я хотел бы разместить в нижней части экрана, и оставшуюся часть содержимого изменить размер, чтобы заполнить доступное пространство, когда объявление загружается. Я вижу, что я хочу, чтобы что-то случилось когда я помещаю объявление в верхнюю часть линейного макета, а затем устанавливаю высоту моего контента как fill_parent. Можно ли это сделать наоборот? Когда я помещаю свое объявление под моим контентом с высотой fill_parent, он не отображается, поскольку места недостаточно. У меня есть решение с относительной компоновкой и краем внизу, чтобы сохранить место для объявления, но мне не нравится черное пространство, которое есть до тех пор, пока объявление не загрузится (если оно вообще произойдет). Любые идеи?

Ответ 1

Вы можете сделать это, используя RelativeLayout, не занимаясь хакерскими вещами:

<?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">
    <bla.bla.AdView
            android:id="@+id/ad"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="#FF0000"/>
    <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_above="@id/ad"/>
</RelativeLayout>

Если объявление не загружается по какой-то странной причине, ListView займет все свободное место. С другой стороны, если объявление действительно загружается, ListView не будет перекрываться объявлением.