1

我遇到的问题是我无法正确显示带有两个广告横幅的 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>
4

2 回答 2

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());
于 2013-04-19T14:52:10.390 回答
0

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

于 2013-04-19T16:49:06.590 回答