相对布局与广告横幅

时间:2013-04-19 14:36:58

标签: android android-layout

我遇到的问题是我无法正确显示带有两个广告横幅的GLSurfaceView。我想将它们放置在移动屏幕的顶部和底部以及GLSurfaceView(主游戏窗口)上方。如何实现?下面是我当前的布局xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/adRelativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/darker_gray" >

<ad banner 1
    android:id="@+id/admobView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    />

<ad banner 2
    android:id="@+id/mmediaView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    />

<android.opengl.GLSurfaceView
    android:id="@+id/gameWindow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

我之前也遇到过这个问题。您可以做的一件事是在您的Activity的RelativeLayout方法中动态创建onCreate。在此布局中,您将正常实例化GLSurfaceView,但不是将其设置为setContentView视图,而是将其添加为布局视图。您还将根据需要将横幅添加到视图中,然后将布局设置为视图而不仅仅是GLSurfaceView。下面是我用来在游戏中向视图底部添加横幅的方法。看看你是否可以根据自己的需要进行调整。

    RelativeLayout layout = new RelativeLayout(this);

    int adId = 0x12346;
    AdView adView = new AdView(this, AdSize.BANNER, "YOUR_AD_ID_NUMBER");
    adView.setId(adId);

    GLSurfaceView glView = new GLSurfaceView(this);

    RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

    RelativeLayout.LayoutParams glParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    glParams.addRule(RelativeLayout.ABOVE, adId);
    glParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);

    layout.addView(adView, adParams);
    layout.addView(glView, glParams);

    setContentView(layout);

    adView.loadAd(new AdRequest());

答案 1 :(得分:0)

我想我终于明白了。对于那些在上面的代码中遇到类似问题的人,我已经将android.opengl.GLSurfaceView xml节点更改为RelativeLayout并将其定位在广告横幅节点之前。然后在java代码中我创建了GLSurfaceView并通过addView方法将它添加到RelativeLayout节点。它终于有效了