2014-06-09 4 views
5

Recentemente ho cambiato da Admob SDK a GPS Lib e c'è 1 cosa che mi infastidisce. Ho una semplice vista per definire la linea nel mio layout per impedire agli utenti di fare clic sugli annunci involontariamente. Con Admob SDK, quella riga scenderà verso il basso del layout quando non ci sono annunci, ma con GPS Lib, quella vista rimane dove si trova. enter image description hereNascondi spazio banner quando non ci sono annunci Android

E quando non ci sono annunci, quando l'utente sta usando l'app in modalità offline c'è quel brutto spazio vuoto. enter image description here

Come posso liberarmi di quello spazio quando non ci sono annunci? Ecco il mio XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/back2" > 
    <RelativeLayout 
     android:id="@+id/upperBar" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:background="#000000" > 
     <RelativeLayout 
      android:id="@+id/RelativeLayout1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:background="@drawable/bar" 
      android:paddingBottom="2dp" 
      android:paddingLeft="2dp" 
      android:paddingRight="2dp" 
      android:paddingTop="2dp" > 
      <ImageButton 
       android:id="@+id/infop" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="20dp" 
       android:background="@drawable/info_select_blue" /> 
      <ImageButton 
       android:id="@+id/share" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_centerHorizontal="true" 
       android:background="@drawable/share_selector_blue" /> 
      <ImageButton 
       android:id="@+id/moreaps" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentRight="true" 
       android:layout_marginRight="20dp" 
       android:background="@drawable/more_selector_blue" /> 
     </RelativeLayout> 
    </RelativeLayout> 
    <GridView 
     android:id="@+id/grid_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/view" 
     android:layout_below="@+id/sbsz" 
     android:columnWidth="110dp" 
     android:horizontalSpacing="10dp" 
     android:listSelector="#00000000" 
     android:numColumns="auto_fit" 
     android:verticalSpacing="12dp" > 
    </GridView> 
    <SeekBar 
     android:id="@+id/sbsz" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/upperBar" 
     android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_dark" 
     android:thumb="@drawable/apptheme_scrubber_control_selector_holo_dark" /> 
    <com.google.android.gms.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     ads:adSize="SMART_BANNER" 
     ads:adUnitId="@string/banner" > 
    </com.google.android.gms.ads.AdView> 
    <View 
     android:id="@+id/view" 
     android:layout_width="fill_parent" 
     android:layout_height="17dp" 
     android:layout_above="@+id/adView" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/bar" 
     android:visibility="visible" /> 

</RelativeLayout> 

risposta

4

si controlla programatically ci sono annunci presenti o no.if annunci non sono presenti, allora è sufficiente impostare

adView.setVisibility(View.GONE) 

altro

adView.setVisibility(View.Visible) 

questo è tutto. ..

+0

Oh sì. Stavo pensando di controllare se il dispositivo è connesso a internet o meno e poi fare qualcosa con Boolean, ma è meglio. Grazie –

16

Nascondi la tua adView inizialmente aggiungendo android: visibility = "gone"

<com.google.android.gms.ads.AdView 
    android:id="@+id/adView" 
    android:visibility="gone" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    ads:adSize="SMART_BANNER" 
    ads:adUnitId="@string/banner" > 
</com.google.android.gms.ads.AdView> 

ora gestire la visibilità ADView in setAdListener

adView.setAdListener(new AdListener() { 

    @Override 
    public void onAdLoaded() { 
     adView.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public void onAdFailedToLoad(int error) { 
     adView.setVisibility(View.GONE); 
    }  

}); 

Questo si tradurrà in esattamente lo stesso comportamento come il vecchio Admob SDK.

+0

Il problema è che se il caricamento dell'annuncio fallisce una volta, il banner sparirà e quindi non ci sarà nemmeno l'aggiornamento dell'annuncio. AdMob non aggiorna l'annuncio se la visualizzazione dell'annuncio non è visibile. – user846316

+0

@ user846316, basta chiamare la funzione di annuncio di caricamento adView dal codice in modo intelligente. –