AdMob如何确定何时分配SMART_BANNER大小

drm*_*wer 2 android admob

我有与包括布局的活动AdViewads:adSize="SMART_BANNER"。它位于屏幕底部,在custom下方WebView。现在,WebView具有基于可用空间(像素尺寸)呈现的内容。因此,在渲染WebView内容之前,我需要知道SMART_BANNER将要占据的大小(尤其是高度),以及因此需要保留的大小WebView。从这里它指出,智能旗帜的高度可以是中的任何一个32dp50dp90dp

据我所知,我需要等待AdView决定格式之后才能呈现WebView。我怎样才能做到这一点?也许通过设置AdListener?然而,该方法AdListener似乎只是让我来决定,例如当一个广告被加载中...我不希望有等待广告加载,我只是想等待广告的实际大小被分配。

我知道我可以通过将设置AdViewBANNER,并将高度固定为来避免所有这些情况50dp,并且确实可以正常工作。但是我更喜欢SMART_BANNER主要是因为高度可以缩小到32dp小手机屏幕上的横向模式,从而为实际内容留出更多空间。

ear*_*jim 5

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)