2012-06-13 5 views
6

Ich habe in main.xml TitelPageIndicator und ViewPager, und ich möchte hinzufügen, adob (rechts in LinearLayout) am unteren Rand von RelativeLayout. Wie kann ich das machen?Dynamisch Ansicht am unteren Rand von RelativeLayout hinzufügen

Wenn ich es starte, sagt das Protokoll nichts über Fehler (da es keinen Platz gibt, um admob zu setzen), aber admob ist unsichtbar, ich kann es nicht sehen. (sieht aus wie admob ist außerhalb des Bildschirms, weil ich versucht, bestimmte Größen zu ViewPager und es funktioniert perfekt) Ich möchte keine bestimmten Größen zu ViewPager (wegen der verschiedenen Bildschirmgrößen) Danke.

Mein main.xml ist:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <com.viewpagerindicator.TitlePageIndicator 
     android:id="@+id/indicator" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true"/> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/indicator"/> 
    <LinearLayout 
     android:id="@+id/for_ads" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/viewpager"/> 
</RelativeLayout> 

UPD. gelöst ich diese answer verwendet und es funktioniert perfekt für mich

Antwort

18

Zuerst Ihre RelativeLayout braucht eine ID, wenn Sie es verweisen möchten:

RelativeLayout rLayout = (RelativeLayout)findViewById(R.id.yourRelativeId); 

Dann einige LayoutParams für das Objekt erstellen (in diesem Fall, Ihre admob adview), die es sich auf den Boden richten sagen (und nicht an andere Ansichten ausrichten, auf diese Weise nicht off-Screen oder bewegt von den anderen Ansichten) gedrückt wird:

RelativeLayout.LayoutParams rLParams = 
    new RelativeLayout.LayoutParams(
    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
    rLParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1); 

Als Nächstes fügen die Aussicht zu yo ur RelativeLayout mit LayoutParams:

rLayout.addView(yourAdView, rLParams); 
+1

in diesem Fall admob deckt meine anderen UI-Objekte –

+0

Dank für Antwort, ich löste diese :) –

+0

Dann, wenn Sie wollen, dass es unter einer anderen Ansicht sein, gerade tun: rLParams. addRule (RelativeLayout.BELOW, viewtoBeBelow.getId()); Wenn sich die darunter liegende Ansicht jedoch bis zum unteren Rand erstreckt, können Sie die Anzeigenansicht nicht sehen. Das bedeutet, dass Sie anstelle von UNTEN die LayoutParams der Ansicht ändern müssen, die über der Anzeigenansicht liegen soll: addRule (RelativeLayout.ABOVE, IhreAdView.getId()); Und stellen Sie sicher, dass Sie eine ID für die Adview mit setID (someInteger) gesetzt haben; oder es wird nicht in der Lage sein, die Ansicht relativ dazu zu platzieren. – Guardanis