Как расположить два вида друг над другом в определенных координатах в Android? - PullRequest
1 голос
/ 10 апреля 2011

У меня есть два вида: вид на игру и вид на AdMob.

Я хочу, чтобы игровой вид располагался в 0, 0 и с заливкой родительского элемента (так, чтобы он занимал весь экран), и я хочу, чтобы вид был расположен в 50, 50 (только примерные координаты) и с fill_content.

Как мне сделать это с помощью FrameLayout в Android? Неважно, с помощью layout-xml или программно.

Я потратил много времени на поиск примеров и настройку кода самостоятельно без какой-либо удачи.

Конкретный пример кода более полезен, чем ссылка на то, как представления обычно работают в Android.

Обновление 1:

Это мой текущий код.

Через XML-макет:

Компоновка:

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

    <se.meendo.mapgame.MainMenuView android:id="@+id/mainmenuview" android:layout_width="fill_parent" android:layout_height="fill_parent" />

    <com.google.ads.AdView android:id="@+id/ad"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dip" 
android:layout_marginRight="50dip"
    />

</FrameLayout>

Java:

public class BannerActivity extends Activity {

    @Override
    public void onCreate(final Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.banner);

        MainMenuView mmv = (MainMenuView) findViewById(R.id.mainmenuview);
        if (mmv == null) {
            mmv = new MainMenuView(this);
        }

        AdView ad = (AdView) findViewById(R.id.ad);
        if (ad != null) {
            ad = new AdView(this, AdSize.BANNER, "a14da0cf5ab5ef7");

            AdRequest request = new AdRequest();
            request.setTesting(true);
            ad.loadAd(request);

        }

    }

}

Через чистую Яву

public class BannerActivity extends Activity {

    @Override
    public void onCreate(final Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        FrameLayout layout = new FrameLayout(this);
        layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

        MainMenuView mmview = new MainMenuView(this);
        LayoutParams pl = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        layout.addView(mmview, pl);

        AdView adView = new AdView(this, AdSize.BANNER, "****");
        LayoutParams pelle = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        pelle.setMargins(240, 430, 0, 240);
        adView.setLayoutParams(pelle);

        //      adView.setAdListener(new MyAdListener(this));

        AdRequest request = new AdRequest();
        request.setTesting(true);
        adView.loadAd(request);

        LayoutParams pl2 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        pl2.setMargins(240, 430, 0, 240);
        //      layout.addView(adView, pl2);
        layout.addView(adView);

        setContentView(layout);

    }

}

Здесь я использую координаты 240, 430 - поскольку я знаю, что баннер имеет размер 320x50, и я хотел попробовать поставить его в центре.

Результаты

XML-макет: представление MainMenu показывало, но не просматривалось Чистая Java: показ MainMenu и просмотр admob. Но представление admob показано в 0, 0.

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

Добавить только атрибут layout_gravity в com.google.ads.AdView просмотреть следующим образом

android:layout_gravity="left"
1 голос
/ 10 апреля 2011

Оберните оба представления в FrameLayout. Чтобы установить адмоб вид на 50, 50:

android:layout_marginLeft="50dip" 
android:layout_marginTop="50dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

Этого должно быть достаточно. Какой код вы пробовали? Вы можете опубликовать это в своем ответе?

...