Android “如何提出建议”;“占领”;即使在请求广告时也要占用空间?(安卓)
我正在为Android使用Google AdMob Ads SDK 4.0.4 默认情况下,在加载广告之前,AdView将没有大小。如果广告上方或下方有按钮,则可能会导致问题 如果广告恰好在用户要点击按钮时返回,用户可能会意外点击广告 在旧的admob SDK中,我使用setGoneWithoutAd(false)解决了这个问题。这样,即使广告尚未返回,空间也将被保留 在新的SDK(Google Admob Ads SDK 4.0.4)中,我通过 使用此快速修复方法:通过在某些布局中放置广告来保留空间 宽度为320dp,高度为50dpAndroid “如何提出建议”;“占领”;即使在请求广告时也要占用空间?(安卓),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)中,我通过 使用此快速修复方法:通过在某些布局中放置广告来保
这是可行的,但我不确定这是否是一个合适的方法。(我会遇到著名的“没有足够的空间显示广告!”问题吗?)
总结一下这个问题:如何(恰当地)让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 width和layout\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);
}
});
}