繁体   English   中英

如何在Android中以特定坐标在彼此之上放置两个视图?

[英]How do I position a two views, on top of each other, at certain coordinates, in Android?

我有两个视图,一个游戏视图和一个admob视图。

我希望游戏视图位于0、0并具有填充父级(因此它覆盖整个屏幕),并且我希望将视图置于50、50(只是示例坐标)并具有fill_content。

如何在Android中使用FrameLayout做到这一点? 不管是通过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);

        }

    }

}

通过纯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);

        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视图,但没有显示admob视图。纯Java:显示了MainMenu视图,并且显示了admob视图。 但是admob视图显示为0、0。

com.google.ads.AdView视图中仅添加layout_gravity属性,如下所示

android:layout_gravity="left"

将两个视图都包装在FrameLayout中。 要将admob视图设置为50、50,请执行以下操作:

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

这应该足够了。 您尝试了什么代码? 可以在答案中张贴吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM