5

我正在开发 android 项目,但在将广告显示在列表视图下方的屏幕底部时遇到问题,而不会导致任何重叠。

目前,如果列表视图中有大量项目导致滚动,则广告应该显示在列表视图下方,但此时广告位于列表视图顶部,因此,用户可以' t 查看列表视图底部的内容。

下面是我的 XML 布局的副本

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:background="@color/black"
    android:orientation="vertical" >
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <TextView android:id="@+id/password_noRecords"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="There are currently\nno saved logins"
        android:textSize="20dp"
        android:textStyle="bold|italic"/>
    <ListView 
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </ListView>
    <Button android:id="@+id/password_clearSearch" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/password_clear_search"
        android:layout_alignParentBottom="true"
        android:visibility="gone"/>
    </LinearLayout>
    <com.google.ads.AdView android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal"
        ads:adUnitId="a14d6125d95c70b"
        ads:adSize="BANNER"
        ads:testDevices="TEST_EMULATOR, 015d1884222bfe01"/>
</RelativeLayout>

我有很多不同的方法,将它全部放在相对布局中,而不是使用另一个线性布局,没有 align parent bottom = true 但它位于列表视图的顶部,与列表视图顶部的任何内容重叠。

感谢您的任何帮助,您可以提供。

4

2 回答 2

13

您可以通过仅使用 aLinearLayout作为基础(摆脱)RelativeLayout并使用android:layout_weight. ListView例子:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView android:id="@+id/password_noRecords"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="There are currently\nno saved logins"
        android:textSize="20dp"
        android:textStyle="bold|italic"/>
    <ListView 
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
    <Button android:id="@+id/password_clearSearch" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/password_clear_search"
        android:layout_alignParentBottom="true"
        android:visibility="gone"/>
    <com.google.ads.AdView android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal"
        ads:adUnitId="a14d6125d95c70b"
        ads:adSize="BANNER"
        ads:testDevices="TEST_EMULATOR, 015d1884222bfe01"/>
</LinearLayout>

请注意ListViewhasandroid:layout_height="0dp"android:layout_weight="1". 这告诉它在将其他元素放入LinearLayout.

于 2013-01-31T20:52:57.283 回答
0

尝试添加android:id="@+id/linear_layout"到您的 LinearLayout 并添加android:layout_below="@id/linear_layout"<com.google.ads.AdView ... />

于 2013-01-31T20:55:07.890 回答