android - 如何在 Android 中以特定坐标将两个 View 相互重叠放置?

标签 android xml layout absolute android-framelayout

我有两个 View ,一个游戏 View 和一个 admob View 。

我希望游戏 View 位于 0, 0 并填充父级(因此它覆盖整个屏幕),我希望 admob View 位于 50, 50(只是一个示例坐标)并带有 fill_content。

如何在 Android 中使用 FrameLayout 执行此操作?无论是通过 layout-xml 还是以编程方式,都没有关系。

我花了很多时间搜索示例并自己调整代码,但没有任何运气。

具体的示例代码比指向 View 在 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 View 但不显示 admob View 纯 Java:显示了 MainMenu View 和 admob View 。但是 admob View 显示在 0, 0。

最佳答案

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

android:layout_gravity="left"

关于android - 如何在 Android 中以特定坐标将两个 View 相互重叠放置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608458/

相关文章:

android - Android webView 中的阿拉伯语自定义字体

java - 从网站获取 XML?

xml - R & XML2 : Replace missing XML elements with NA

java - 创建简单的 Spring AOP 时出现异常抛出建议演示

android - 自定义通知布局不适用于 Android 2.3 或更低版本

Android 相对布局中心水平与另一个 View

html - css 文件未被识别

android - 在android自定义键盘中设置键盘模式

android - Flutter - Android 不请求权限

javascript - 获取两个 XML 树之间差异的算法(JS 或伪代码)