显示 AdMob 横幅时调整布局
Adjust the Layout when AdMob Banner get Displayed
我正在将 AdMob 横幅 广告整合到我的 Activity
中。布局由 GridView
和 AdView
组成。
我想要的:-
当广告未显示时,即在开始时或正在下载广告时或其他任何情况下,我希望 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
,而布局的 weightSum
是 10
,所以GridView
不会填满整个 LinearLayout
.
从布局中删除以下行应该可行:
android:weightSum="10"
此外,设置 AdView
的可见性是多余的。
设置 ViewGroup
的可见性也会影响他们的 children。
您可以从 AdView
中删除以下属性:
android:visibility="gone"
之后,设置 banner_view
的可见性应该就足够了:
@Override
public void onAdLoaded() {
super.onAdLoaded();
bannerView.setVisibility(View.VISIBLE);
}
我正在将 AdMob 横幅 广告整合到我的 Activity
中。布局由 GridView
和 AdView
组成。
我想要的:-
当广告未显示时,即在开始时或正在下载广告时或其他任何情况下,我希望 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
,而布局的 weightSum
是 10
,所以GridView
不会填满整个 LinearLayout
.
从布局中删除以下行应该可行:
android:weightSum="10"
此外,设置 AdView
的可见性是多余的。
设置 ViewGroup
的可见性也会影响他们的 children。
您可以从 AdView
中删除以下属性:
android:visibility="gone"
之后,设置 banner_view
的可见性应该就足够了:
@Override
public void onAdLoaded() {
super.onAdLoaded();
bannerView.setVisibility(View.VISIBLE);
}