5

Android アクションバーの上 (上) に AdMob 広告を配置しようとしています。 上の ActionBar AdMob

  • 黄色 = アクションバー
  • 赤 = コンテンツ
  • 緑 = 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);
}

以下に、私のアプリの階層ビューアの一部を示します。ビュー「id/main」は私のメイン レイアウトです。画像でわかるように、ActionBar には「id/action_bar_container」という ID があります。上記のコードでは、FrameLayout の「コンテンツ」にアクセスできましたが、action_bar_container ビューにアクセスできませんでした。それらは同じ階層レベルにあるため (私が思うに)、何らかの方法でその ActionBar ビューにアクセスできるはずです。

ここに画像の説明を入力

しかし、うまくいきませんでした:

ActionBar を表示しない

それを達成する方法、またはそれがどのように機能するかのリンク、または機能しないという公式声明。

4

5 に答える 5

0

コンテンツ フレーム レイアウトの参照があるとします。親ビューを取得できますか?それを LinearLayout にキャストしてから、ビューを最初の位置に追加します。

http://developer.android.com/reference/android/view/View.html#getParent%28%29

于 2013-07-04T18:46:40.050 に答える
0

私の知る限り、ActionBar を使用することを選択すると、レイアウトよりも (UI 階層の) 上位レベルに追加されます。

つまり、それがどこに配置され、何がその上に配置されるかを制御できません。

レイアウトはアクション バーの下から始まり、画面の下部で終わります。

私の意見では、あなたがやりたいことをする方法を見つけたとしても、それは非常に不完全なものになるでしょう.

于 2013-07-04T08:33:42.873 に答える