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 管理 Web から行います)。それは私の問題を解決しました。私は OpenX 広告プロバイダーを使用していました。

于 2011-08-03T19:09:44.100 に答える
0

一定のバナー幅を設定するのは良い考えではありませんが、バナーが 320px である限り問題なく動作します:

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 に答える