2012-03-24 34 views
1

我無法從admob設置廣告的正確位置。我已經爲這個廣告Android 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野火)和改變方向,就會出現問題設置一個特殊的佈局。所有應用程序都會相應更改,但廣告仍保留在左上角,而不是按照我的願望在頂部中心位置。

任何人都可以告訴我有關如何完成它的任何線索?

回答

1

嘗試改變/添加比重= 「水平」

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

千位感謝的人。它以正確的方式工作。不知道爲什麼相對佈局做的工作和linearlayout沒有,但就是這樣。 – user989501 2012-03-24 23:23:19

+0

不客氣!所以請將回復設置爲已接受。乾杯 – Lisitso 2012-05-04 15:14:59

0

所以,你知道,問題是你設置上的LinearLayout的layout_gravity,並在AdView的重力。

不同之處在於,layout_gravity是視圖本身在其父級中的位置,而gravity則是針對佈局中的子元素。總之,如果您對LinearLayout使用了gravity =「center_horizo​​ntal」,或者爲AdView使用了AdView LinearLayout.LayoutParams並將佈局參數的重心設置爲center_horizo​​ntal(等同於XML中的layout_gravity),則兩者都可以工作。但你讓他們都倒退了。

希望有道理 - 你不需要相對佈局來集中某些東西。