LinearLayout覆盖整个屏幕?

时间:2014-03-17 04:00:38

标签: android android-layout libgdx admob android-linearlayout

我最近使用LibGDX制作了一款游戏,并在LinearLayout中添加了MainActivity.java,以便我可以在那里放置AdMob广告。一切都运行良好和花花公子,但问题是布局覆盖整个屏幕黑色,我无法加载或玩游戏。有没有办法让LinearLayout在屏幕的顶部(大多数广告都在哪里),并让它存在,同时允许游戏加载和播放?因为现在我的应用只是一个黑色的屏幕,顶部有一个广告。

这是MainActivity.java

package com.me.mygdxgame;

import android.os.Bundle;
import android.widget.LinearLayout;

import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AndroidApplication {

    AdView adView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = true;

        initialize(new MyGame(), cfg);

        adView = new AdView(this);
        adView.setAdSize(AdSize.BANNER);
        adView.setAdUnitId("My Ad Unit ID");

        setContentView(R.layout.main);
        LinearLayout layout = (LinearLayout)findViewById(R.id.linearLayout);
        layout.addView(adView);

        if (layout ==null)
            System.out.println("layout doesn't work");
        if (layout !=null)
            System.out.println("layout works");
        if (adView == null)
            System.out.println("adView doesn't work");   
        if (adView != null)
            System.out.println("adView works");


        AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice("My Device ID")
        .build();

        if (adRequest == null)
            System.out.println("adRequest doesn't work");
        if (adRequest != null)
            System.out.println("adRequest works");


        adView.loadAd(adRequest);
        setContentView(layout);
    }

    public void onDestroy(){
        if (adView != null) {
            adView.destroy();
          }
          super.onDestroy();
    }
}

这是main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
</LinearLayout>

2 个答案:

答案 0 :(得分:1)

对于您给出的线性布局:

  android:layout_width="fill_parent"
    android:layout_height="fill_parent"

这导致它填满整个屏幕。你可以试试这个:

  android:layout_width="fill_parent"
  android:layout_height="wrap_content"

您还可以使用高度或宽度的某个dp值指定特定高度

答案 1 :(得分:0)

你的问题是libGDX And​​roidApplication #initialize(你在#onCreate中调用)调用setContentView然后你替换两次。 #setContentView只能使用Activity的布局调用一次。