14

我正在使用适用于 Android 的 Google AdMob Ads SDK 4.0.4

默认情况下,在广告加载之前,AdView 没有大小。如果您在广告上方或下方有按钮,这可能会导致问题。

如果广告在他们即将点击按钮的确切时刻返回,用户可能会意外点击广告。

在旧的 admob SDK 中,我使用 setGoneWithoutAd(false) 解决了这个问题。这样,即使广告尚未归还,也会保留空间。

在新的 SDK(Google Admob Ads SDK 4.0.4)中,我设法通过使用这个快速修复来做同样的事情:通过将广告放置在一些具有 width="320dp" 和 height="50dp" 的布局中来保留空间

<LinearLayout 
                        android:layout_width="320dp" 
                        android:layout_height="50dp" > 
                  <com.google.ads.AdView android:id="@+id/adview" 
                         android:layout_width="wrap_content" 
                         android:layout_height="wrap_content" 
                         ads:adUnitId="xxxxxxxxxxx" 
                         ads:adSize="BANNER"/> 
</LinearLayout> 

它有效,但我不确定这是否是正确的方法。(我会遇到著名的“没有足够的空间来展示广告!”问题吗?)

总结一下这个问题:即使在请求广告时,如何(正确地)让 AdView “占用”空间?

先感谢您!

4

3 回答 3

6

首先,您必须确定所需的广告尺寸。有几个预定义的。

最容易使用的是SMART_BANNER,它将调整其宽度以匹配当前屏幕宽度,并且对于屏幕高度 <=400、(>400 && <=720) 或 >720 dp,它的高度将为 32、50 或 90 dp分别。

一旦您知道您将请求的横幅类型,您就可以在adSize属性中声明它,并使用layout_widthlayout_height属性为其保留空间。

例如,对于 SMART_BANNER,您可以执行以下操作:

<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="@dimen/ad_banner_height"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="xxxxxxxxx"/>

您将 ad_banner_height 设置为以下值:

values/dimens/ad_banner_height --> 32dp
values-h400dp/dimens/ad_banner_height --> 50dp
values-h720dp/dimens/ad_banner_height --> 90dp

对于其他横幅尺寸,请查看:https ://developers.google.com/admob/android/banner#banner_sizes

于 2016-09-01T19:25:28.940 回答
5

你有没有尝试过:

 <com.google.ads.AdView android:id="@+id/adview" 
                     android:layout_width="320dip" 
                     android:layout_height="50dip" 
                     ads:adUnitId="xxxxxxxxxxx" 
                     ads:adSize="BANNER"/> 

我使用 AdWhirl 为我投放广告,我拥有它的方式是使用与此类似的固定视图和固定尺寸。看起来您已将其设置为包装内容,从而使视图在什么都没有时消失。试试看,让我知道它是如何工作的。

于 2011-07-29T01:41:26.167 回答
0

在我的横幅设计中:

<com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:visibility="gone"
        app:adSize="BANNER"
        app:adUnitId="ca-app-pub-3940256099942544/6300978111"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
    </com.google.android.gms.ads.AdView>

如果不是高级模式,我称此方法

private void showBanner(){
        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
        mAdView.setVisibility(View.VISIBLE);
        mAdView.setAdListener(new AdListener(){

            @Override
            public void onAdLoaded() {
                super.onAdLoaded();
                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                mAdView.setLayoutParams(layoutParams);
                mAdView.setVisibility(View.VISIBLE);
            }

            @Override
            public void onAdFailedToLoad(LoadAdError loadAdError) {
                super.onAdFailedToLoad(loadAdError);
                mAdView.setVisibility(View.GONE);
            }
        });
    }

首先我显示设计中分配的占用 60dp 的横幅,我添加了一个侦听器,以便在无法加载横幅时隐藏空间,但如果加载了横幅,它会分配高度和宽度 WRAP_CONTENT 并显示它

于 2020-12-02T18:29:22.680 回答