我有与包括布局的活动AdView有ads:adSize="SMART_BANNER"。它位于屏幕底部,在custom下方WebView。现在,WebView具有基于可用空间(像素尺寸)呈现的内容。因此,在渲染WebView内容之前,我需要知道SMART_BANNER将要占据的大小(尤其是高度),以及因此需要保留的大小WebView。从这里它指出,智能旗帜的高度可以是中的任何一个32dp,50dp和90dp。
据我所知,我需要等待AdView决定格式之后才能呈现WebView。我怎样才能做到这一点?也许通过设置AdListener?然而,该方法的AdListener似乎只是让我来决定,例如当一个广告被加载中...我不希望有等待广告加载,我只是想等待广告的实际大小被分配。
我知道我可以通过将设置AdView为BANNER,并将高度固定为来避免所有这些情况50dp,并且确实可以正常工作。但是我更喜欢SMART_BANNER主要是因为高度可以缩小到32dp小手机屏幕上的横向模式,从而为实际内容留出更多空间。
AdView在实际加载广告之前,没有API可以检索其大小,并且该类是final,因此您也无法自己实现。
要动态确定横幅的高度,您需要使用AdListener怀疑的值。
另一种选择是使用根据设备的屏幕高度动态选择的静态值(来自文档):
32 dp高度在哪里?400 dp
50 dp,其中高度> 400 dp,并且?720 dp
90 dp,其中高度> 720 dp
(你可以检查这个答案用于确定屏幕的高度和这一个对PX和DP值之间进行转换)
例如,您可以在您的中使用类似的内容Activity:
private int getSmartBannerHeightDp() {
DisplayMetrics dm = getResources().getDisplayMetrics();
float screenHeightDp = dm.heightPixels / dm.density;
return screenHeightDp > 720 ? 90 : screenHeightDp > 400 ? 50 : 32;
}
Run Code Online (Sandbox Code Playgroud)