2012-03-24 8 views
1

Ich habe Probleme, die richtige Position der Anzeigen von admob. Ich habeAndroid admob view set zentriert unabhängig von der Ausrichtung

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

und definiert Anzeigen ein spezielles Layout für diese Anzeigen eingestellt als

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()); 

Das Problem folgt entsteht, wenn ich ein echtes Gerät (HTC verheerendes Feuer) gesetzt und die Ausrichtung ändern. Alle Apps ändern sich entsprechend, aber die Anzeige bleibt oben links, anstatt oben in der Mitte, wie ich es wünsche.

Jeder kann mir einen Hinweis geben, wie es zu erreichen ist? Versuchen

Antwort

1

Ändern/Hinzufügen Gewicht = "horizontal"

OR

Versuchen die AdMob Ansicht in eine RelativeLayout anstelle eines Linearlayout setzen. In diesem Beispiel wird die AdMob-Ansicht dynamisch vom Code hinzugefügt. Es hat für mich funktioniert!

 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-Layout:

 <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

Tausend Dank Mann. Es hat richtig funktioniert. Ich weiß nicht wirklich warum relative Layout die Arbeit und linearlayout nicht tun, aber das ist es. – user989501

+0

Gern geschehen! Bitte geben Sie die Antwort als akzeptiert an. Prost – Lisitso

0

So wissen Sie, war das Problem, dass Sie die layout_gravity auf dem Linearlayout festgelegt und die Schwerkraft auf der AdView.

Der Unterschied ist, dass layout_gravity für die Ansicht selbst innerhalb des übergeordneten Elements und gravity für untergeordnete Elemente innerhalb des Layouts ist.

Zusammenfassend: Wenn Sie die Schwerkraft verwendet = „center_horizontal“ für das Linearlayout oder gaben den AdView LinearLayout.LayoutParams und die Schwere des Layout params auf center_horizontal (entspricht layout_gravity in XML) für die AdView, entweder hätte gearbeitet . Aber du hast sie beide rückwärts.

Hoffen Sie, dass das Sinn ergab - Sie brauchen kein relatives Layout, um etwas zu zentrieren.

Verwandte Themen