Android AdMob View Set по центру независимо от ориентации - PullRequest
1 голос
/ 25 марта 2012

У меня проблемы с установкой правильной позиции рекламы от admob.Я установил специальный макет для этой рекламы

<LinearLayout 
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  android:id="@+id/main_layout_ads"> 
</LinearLayout>

и определил объявления следующим образом:

adView = new AdView(this, AdSize.BANNER, AD_UNIT_ID);
LinearLayout layout = (LinearLayout)findViewById(R.id.main_layout_ads);
adView.setGravity(Gravity.CENTER_HORIZONTAL);
layout.addView(adView, 0);
adView.loadAd(new AdRequest());

Проблема возникает, когда я устанавливаю реальное устройство (HTC wildfire) и меняю ориентацию.Все приложения изменяются соответствующим образом, но объявление остается в верхнем левом углу, а не выравнивается по верхнему центру, как я желаю.

Кто-нибудь может дать мне любую подсказку о том, как этого добиться?

Ответы [ 2 ]

1 голос
/ 25 марта 2012

Попробуйте изменить / добавить гравитацию = "горизонтальный"

OR

Попробуйте поместить представление AdMob в RelativeLayout вместо LinearLayout. В этом примере представление AdMob динамически добавляется кодом. У меня это сработало!

        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

        RelativeLayout layout = (RelativeLayout)findViewById(R.id.ad_layout_blank); // this is the RelativeLayout
        layout.setGravity(Gravity.CENTER_HORIZONTAL);
        layout.addView(adView, layoutParams);
        layout.invalidate();

XML-макет:

        <RelativeLayout android:id="@+id/ad_layout_blank"
          android:layout_width="fill_parent" android:layout_height="50dp"
          android:layout_gravity="center_horizontal"
          android:gravity="center_horizontal"
          android:visibility="visible"
        />
0 голосов
/ 25 марта 2012

Итак, вы знаете, проблема была в том, что вы установили layout_gravity в LinearLayout и гравитацию в AdView.

Разница в том, что layout_gravity предназначен для самого представления внутри его родителя, а гравитация для дочерних элементов в макете.

В итоге, если вы использовали gravity = "center_horizontal" для LinearLayout или задали AdView LinearLayout.LayoutParams и задали гравитацию для параметров макета в center_horizontal (эквивалентно layout_gravity в XML) для AdView, либоработал.Но ты получил их обоих задом наперед.

Надеюсь, что это имело смысл - вам не нужно относительное расположение, чтобы центрировать что-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...