1

我有一个透明布局,用于在我的应用程序中放置横幅广告。布局始终位于我的游戏区域顶部,但广告仅偶尔出现一次。该代码的工作原理如下:

transparent_linearlayout_to_hold_banner.setBackgroundColor(Color.TRANSPARENT);   
game_frame_layout.addView(transparent_linearlayout_to_hold_banner);
setContentView(game_frame_layout);

当我想要展示广告时,我会执行

transparent_linearlayout_to_hold_banner.addView(adView);

当我希望广告消失时,我会执行

transparent_linearlayout_to_hold_banner.removeView(adView);

这在我的 Galaxy S 上完美运行!使用 4.0.3,但在使用 2.3 的 Galaxy 标签上,我发现我的 transparent_linearlayout_to_hold_banner 会在添加出现后立即变黑,并且即使删除了广告,也会永远保持黑色。

知道发生了什么吗?...以及如何解决?

编辑:经过一些实验,我发现布局的颜色没有改变,但 alpha 通道是。我的猜测是,横幅广告系统的 SDK 可能正在调用某些函数以确保横幅本身不透明,然后(取决于操作系统版本)这会产生使其父布局的副作用不透明。

4

4 回答 4

0

尝试使您想要在 XML 中透明的布局,而不是动态的。我在动态添加的带有透明项目的 ListView 上遇到了这样的问题。

你在这里有一个游戏,所以我建议的当然可能行不通,或者很难做到,但是你可以使用 FrameLayout 来放置你绘制的布局,并将透明的布局放在它上面。另请注意,在这种情况下,触摸将转到广告布局。它可以被阻止,但有点像黑客(顺便说一下我做过一次)。

我不知道这是否可行,但请尝试一下。

于 2012-06-13T15:16:45.877 回答
0

在添加广告横幅之前尝试使布局不透明。

当您想删除广告时,请删除广告横幅视图并再次使布局透明。

您可以在删除广告后再次尝试添加此行吗?

transparent_linearlayout_to_hold_banner.setBackgroundColor(Color.TRANSPARENT);   
于 2012-06-07T17:12:41.947 回答
0

如果您使用的是 admob,请尝试最新的 6.0 库,它在控制广告外观方面有一些改进(如我所见),它似乎更加关注最佳实践中描述的属性:指定广告颜色。我以前版本的库有类似的问题。然而,它不允许 alpha 通道,因此您将无法指定广告的透明背景,但它可能会解决您的问题。

于 2012-06-12T07:59:52.527 回答
0

一些想法:

您可以简单地删除将背景设置为 lineraLayout 的行:

transparent_linearlayout_to_hold_banner.setBackgroundColor(Color.TRANSPARENT);   

?

另外,您可以切换线性布局(或 adView)的可见性,而不是删除和添加 adView 吗?

于 2012-06-15T11:40:07.260 回答