如何将AdMob放置在屏幕顶部(上图)Android操作栏?

Bru*_*eri 5 android admob android-layout android-actionbar

我尝试将AdMob广告放置在Android操作栏的屏幕顶部(上方). 上面的ActionBar AdMob

  • 黄色= ActionBar
  • 红色=内容
  • 绿色= AdMob

我发现的一个类似问题是在屏幕底部放置一个广告,并显示操作栏.但到目前为止,我无法弄清楚如何将它放在屏幕的顶部.

我这样试过:

private AdView adView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // main view setup
    setContentView(R.layout.main);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    // actionbar setup
    ActionBar actionBar = getActionBar();
    actionBar.setTitle("Search");
    actionBar.setDisplayHomeAsUpEnabled(true);

    final LinearLayout content = (LinearLayout) findViewById(android.R.id.content).getParent();

    // Create the adView
    adView = new AdView(this, AdSize.BANNER, "ID");

    // Lookup your LinearLayout assuming it’s been given
    // the attribute android:id="@+id/mainLayout"

    // Add the adView to it
    FrameLayout.LayoutParams parm = (FrameLayout.LayoutParams) content.getLayoutParams();
    parm.gravity = Gravity.TOP;
    content.addView(adView);

    // Initiate a generic request to load it with an ad
    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice("TEST_DEVICE_ID");
    adView.loadAd(adRequest);
}
Run Code Online (Sandbox Code Playgroud)

您可以在下面看到我的应用程序的层次结构查看器的一部分.视图"id/main"是我的主要布局.如图所示,ActionBar有一个名为"id/action_bar_container"的id.在上面的代码中,我设法访问了FrameLayout"内容",但我无法访问action_bar_container视图.因为它们位于相同的层次结构级别(我认为),所以应该可以以某种方式访问​​该ActionBar视图.

在此输入图像描述

但它不起作用:

没有显示ActionBar

任何想法如何实现它或链接如何工作或官方声明它不起作用.

Del*_*yan 6

您可以getRootView()在任何视图上使用或getWindow().getDecorView()获取PhoneDecorView.它有一个孩子 - 垂直LinearLayout.

在那里添加您的布局作为第一个孩子.

请注意,这是一个糟糕的坏主意.从用户体验的角度来看,这是对所有设计指南的可怕打击.由于众多设计原因,操作栏必须位于顶部.

其次,这可能会破坏以OEM为主题的设备.

第三,在风景中平板电脑怎么样,你真的会在顶部有这样一个巨大的酒吧吗?

总之,是的,这是可能的,但这是一个可怕的想法.不要这样做.