4

我想在我的 Android 游戏中添加 MoPub 广告。游戏是在 SurfaceView 类上创建的。我没有 xml 布局文件。问题是我无法在屏幕上居中广告。我尝试中心和重力一切。还是不行。MoPubView 扩展了 FrameLayout。

    MoPubView mAdView = new MoPubView(this);
    mAdView.setAdUnitId("_MY__ID_"); 
    mAdView.loadAd();

    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

    RelativeLayout mRelativeLayout = new RelativeLayout(this);

    mRelativeLayout.setGravity(Gravity.CENTER_HORIZONTAL);
    mRelativeLayout.addView(mSurface);
    mRelativeLayout.addView(mAdView, layoutParams);

    mRelativeLayout.invalidate();
    setContentView(mRelativeLayout);

请给我一些建议,因为它让我发疯。我觉得我错过了一些简单的东西。

4

4 回答 4

1

只需使用“FILL_PARENT”参数创建一个容器布局并将您的广告视图添加到其中,如下所示:

MoPubView mAdView = new MoPubView(this);
mAdView.setAdUnitId(XXXXXXX);

RelativeLayout adContainer = new RelativeLayout(this);
addContentView(adContainer, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

LayoutParams adParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 1); //to align vertically at top
adParams.addRule(RelativeLayout.CENTER_IN_PARENT, 1); //to align horizontally at center

adContainer.addView(mAdView, adParams);
mAdView.loadAd();
于 2012-06-20T13:42:58.917 回答
1

您不能直接在 MoPub 中将内容居中,或者至少我还没有找到这样做的方法。它基于 FrameLayout。

您必须将广告以 HTML 居中。如果您在 MoPub 活动中使用自定义 HTML 代码,只需将代码包装在<div style="text-align:center">...</div>. (通过 MoPub 管理网站执行此操作)。它解决了我的问题,我使用的是 OpenX 广告提供商。

于 2011-08-03T19:09:44.100 回答
0

我知道设置恒定的横幅宽度不是一个好主意,但只要你的横幅是 320 像素,它就可以正常工作:

final float scale = getResources().getDisplayMetrics().density;

MoPubView mAdView = new MoPubView(this);
mAdView.setAdUnitId(MOPUB_ID); 
mAdView.loadAd();

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams((int) (320*scale), LayoutParams.WRAP_CONTENT);

layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

RelativeLayout mRelativeLayout = new RelativeLayout(this);

mRelativeLayout.addView(mSurface);
mRelativeLayout.addView(mAdView, layoutParams);

mRelativeLayout.invalidate();
setContentView(mRelativeLayout);
于 2011-08-05T09:38:41.747 回答
0

我用下面的代码片段做了同样的事情。我正在使用 LibGDX java 游戏引擎。

Relativelayout layout = new RelativeLayout(this);
RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
                                RelativeLayout.LayoutParams.WRAP_CONTENT);
                adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

                moPubView = new MoPubView(mActivity.getApplicationContext());
                moPubView.setAdUnitId("XXXXXX");// Banner test Ad unit Id.
                moPubView.setAutorefreshEnabled(true);
                moPubView.setVisibility(View.GONE);
                layout.addView(moPubView,adParams);

1.我在父级中有相对布局。

2.在父相对布局中添加了MoPubView,只有layoutParams ALIGN_PARENT_BOTTOM && CENTER_HORIZONTAL

layout.addView(moPubView,adParams);
于 2018-09-25T21:04:27.090 回答