显示 AdMob 横幅时调整布局

Adjust the Layout when AdMob Banner get Displayed

我正在将 AdMob 横幅 广告整合到我的 Activity 中。布局由 GridViewAdView 组成。

我想要的:-

当广告未显示时,即在开始时或正在下载广告时或其他任何情况下,我希望 GridView 拥有所有屏幕。但是当要显示广告时,它应该覆盖下面所需的 space 但不要重叠任何内容。

我的布局:-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="10"
    android:id="@+id/ll_gridmain"
    tools:context="mohits.app.picreddit.itemgrid">

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="9"
    android:divider="@null"
    android:numColumns="2"
    android:background="#454545" >
    </GridView>

<LinearLayout android:id="@+id/banner_view"
    android:orientation="horizontal"
    android:layout_height="0dp"
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:gravity="bottom"
    android:visibility="gone">
<com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ads:adSize="BANNER"
        ads:adUnitId="@string/ad_banner"
        android:visibility="gone">
    </com.google.android.gms.ads.AdView>

</LinearLayout>

</LinearLayout>

我的Activity:-

mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice("xxx")
        .build();
        mAdView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            super.onAdLoaded();
            mAdView.setVisibility(View.VISIBLE);
            bannerView.setVisibility(View.VISIBLE);
        }
    });

我得到了什么:-

banner_view 布局始终显示,即使我将其设置为 GONE。这应该仅在显示广告时可见。

谢谢。

问题是,即使您删除横幅,GridView 的权重仍将是 9,而布局的 weightSum10,所以GridView 不会填满整个 LinearLayout.

从布局中删除以下行应该可行:

android:weightSum="10"

此外,设置 AdView 的可见性是多余的。

设置 ViewGroup 的可见性也会影响他们的 children。

您可以从 AdView 中删除以下属性:

android:visibility="gone"

之后,设置 banner_view 的可见性应该就足够了:

@Override
public void onAdLoaded() {
    super.onAdLoaded();
    bannerView.setVisibility(View.VISIBLE);
}