Android “如何提出建议”;“占领”;即使在请求广告时也要占用空间?(安卓)

Android “如何提出建议”;“占领”;即使在请求广告时也要占用空间?(安卓),android,android-layout,admob,banner-ads,adview,Android,Android Layout,Admob,Banner Ads,Adview,我正在为Android使用Google AdMob Ads SDK 4.0.4 默认情况下,在加载广告之前,AdView将没有大小。如果广告上方或下方有按钮,则可能会导致问题 如果广告恰好在用户要点击按钮时返回,用户可能会意外点击广告 在旧的admob SDK中,我使用setGoneWithoutAd(false)解决了这个问题。这样,即使广告尚未返回,空间也将被保留 在新的SDK(Google Admob Ads SDK 4.0.4)中,我通过 使用此快速修复方法:通过在某些布局中放置广告来保

我正在为Android使用Google AdMob Ads SDK 4.0.4

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

如果广告恰好在用户要点击按钮时返回,用户可能会意外点击广告

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

在新的SDK(Google Admob Ads SDK 4.0.4)中,我通过 使用此快速修复方法:通过在某些布局中放置广告来保留空间 宽度为320dp,高度为50dp


这是可行的,但我不确定这是否是一个合适的方法。(我会遇到著名的“没有足够的空间显示广告!”问题吗?)

总结一下这个问题:如何(恰当地)让AdView在请求广告时“占据”空间

提前谢谢你

您是否尝试过:

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


我使用AdWhirl为我的广告服务,我的方式是以固定的视角,与此类似,具有固定的维度。看起来您已将其设置为包装内容,使视图在没有内容时消失。试试看,让我知道它是如何运作的。

首先你必须决定你想要的广告大小。有几个预定义的

最容易使用的是智能横幅,它将调整其宽度以匹配当前屏幕宽度, 屏幕高度分别为400和720 dp时,其高度将分别为32、50或90 dp

一旦您知道您将请求的横幅类型,您可以在adSize属性上声明它,并使用layout\u widthlayout\u height属性为此保留空间

例如,对于SMART_横幅,您可以执行以下操作:

<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"/>
对于其他横幅尺寸,请选中:

在我的横幅设计中:

<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>

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

我希望找到一种解决方案,该解决方案不涉及在布局中硬编码大小:-(如果你认为我的回答是正确的,你会认为我的回答被接受吗?
values/dimens/ad_banner_height --> 32dp
values-h400dp/dimens/ad_banner_height --> 50dp
values-h720dp/dimens/ad_banner_height --> 90dp
<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);
            }
        });
    }