我决定在我的应用程序中添加一个带有AdMob的SMARTBANNER。正如文档中所说:安卓上的smart-banners sizes,纵向,我保留了50dp的高度。所以我只是为它保留了一个空线性布局,在过去的应用程序中它对我来说是有效的:
<LinearLayout
android:id="@+id/layoutAd"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:orientation="vertical" />然后使用这个方法:
private void createAdView() {
if (C.AD_ON) {
ad_view = new AdView(this, AdSize.SMART_BANNER, C.AD_APPLICATION_ID);
LinearLayout l = (LinearLayout) findViewById (R.id.layoutAd);
l.addView (ad_view);
AdRequest a = new AdRequest();
ad_view.loadAd(a);
}
}现在,虽然这个简单的方法通常可以工作,但在这种情况下,我得到了一个错误:
Not enough space to show ad! Wants: <480, 90>, Has: <480, 50>?480x90? 480x50?我在上表中找不到这些尺寸中的任何一个...它们从何而来?不管怎么说,广告没有显示出来。
然后我试着保留90dp而不是50dp,广告正确显示,留下一个emtpy空间...你猜怎么着..。大约40dp。
在这一点上,我产生了一个问题:以前,在我之前的应用程序中,一切都在手机上运行。我以为一切都在适应不同的屏幕尺寸和密度。现在我害怕我的许多广告实际上不能显示,因为广告预期是90dp而不是50dp,或者其他任何数字。
实际上,我决定放一个SMARTBANNER的唯一原因是我认为可以摆脱这种问题!
现在..。我应该怎么做才能让它在每个可能的屏幕上都能正确地工作,并合理地确保它不会在一定的密度或大小上失败?我是否应该自己检测我正在运行的设备,然后以编程方式保留50、90或55 dp?对我来说这听起来很荒谬!
难道没有像"WRAP_CONTENT“这样的函数可以应用于横幅吗?这样我就不必手动指定90或50像素,只需期望显示正确的横幅和适应它的布局即可。
谢谢。
发布于 2013-02-22 08:00:15
你真的在智能横幅上尝试过layout_height版的WRAP_CONTENT吗?这就是解决方案和推荐的实践。
发布于 2013-02-22 08:10:10
如果你想使用一个固定的高度(而不是推荐的WRAP_CONTENT),你将不得不为每个屏幕尺寸提供一个尺寸。我使用以下维度,但请注意,如果smartbanner的实现发生变化,这些维度可能会发生变化。
/values/dimens
<dimen name="ad_min_height">50dp</dimen>
/values-land/dimens
<dimen name="ad_min_height">32dp</dimen>
/values-large-land-v11/dimens
<dimen name="ad_min_height">90dp</dimen>
/values-large-v11/dimens
<dimen name="ad_min_height">90dp</dimen>https://stackoverflow.com/questions/14969574
复制相似问题