在Libgdx屏幕中使用LinearLayout的Admob横幅广告

4

我目前正在将admob广告加入我的第一个libgdx项目中。我已经成功使用相对布局显示了横幅广告,但我想知道在垂直LinearLayout中会是什么样子,在那里,先添加gameScreen,然后再添加广告横幅。到目前为止,我查看的所有关于线性布局的代码示例都是使用xml实现的,但我想通过代码来实现它。

这是我当前使用相对布局的实现方式:

RelativeLayout layout = new RelativeLayout(this);
        layout.addView(gameView);

    RelativeLayout.LayoutParams adParams =
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    layout.addView(adView, adParams);

    setContentView(layout);
}

我尝试将每个 "RelativeLayout" 替换为 "LinearLayout" 并使用 layout.setOrientation(LinearLayout.VERTICAL),但我猜这不是 LinearLayout 的工作方式。我在 Android 应用程序编程方面只有很少的经验,所以我会感激任何提示。

编辑:这是我自己尝试的(非常基本的)方法(在有和没有注释的情况下都尝试过,在这两种情况下只有 gameView 是可见的):

LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        //layout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
        layout.addView(gameView);
        layout.addView(bannerAdView);

        setContentView(layout);

请展示你使用LinearLayout的例子。 - Matthew Hooker
好的,这些行已经被添加了。 - Doflaminhgo
@Doflaminhgo 你好。我发现你删除了问题“‘Room migration: Indices = null (“Migration didn't properly handle”)'”。我也遇到了同样的问题,正在努力解决。你能帮忙吗?抱歉在这里留言! - vizsatiz
@vizsatiz 嗯,我尝试的解决方案是创建另一个表,完全遵循 room 的期望(您可以在 room 创建的“模式”文件中找到必要的创建语句)。然后我将旧表的所有条目复制到新表中,删除旧表并重命名新表。这有点繁琐,但也是我找到的唯一解决方案 :) - Doflaminhgo
哦,谢谢老兄!!我试了一下,它起作用了 :) - vizsatiz
1个回答

1
    // Create the layout
    Linearlayout = new LinearLayout(this);

    // Create the libgdx View
    View gameView = initializeForView(new YourGame(), false);

    // Create and setup the AdMob view
    AdView adView = new AdView(this, AdSize.BANNER, "xxxxxxxx");
    adView.loadAd(new AdRequest());

    // Add the libgdx view
    layout.addView(gameView);

    // Add the AdMob view
    LinearLayout.LayoutParams adParams = 
        new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 
                LinearLayout.LayoutParams.WRAP_CONTENT);

    layout.addView(adView, adParams);

    // Hook it all up
    setContentView(layout);

这是从https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx修改过的版本。


这也没有成功。我目前正在使用相对布局来解决它,gameViewParams.bottomMargin = AdSize.BANNER.getHeightInPixels(this); 但是这样做会导致屏幕在没有连接加载横幅时留下黑色条纹。 - Doflaminhgo
发生了什么事?游戏画面又覆盖上去了吗?如果是这样,你可以尝试使用片段。 - Matthew Hooker
我不确定游戏屏幕是在广告视图上绘制还是游戏屏幕仅填充整个屏幕并将广告“推”到外面。LinearLayout默认是“match_parent”吗?如果不是,我可以尝试设置此属性。 - Doflaminhgo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接