2016-06-30 23 views
5

Ho un RelativeLayout in cui ho un RecyclerView e un LinearLayout con un AdView all'interno. Il RecyclerView ha molti elementi e quando non ero in grado di visualizzarli sullo schermo dovevo semplicemente scorrere verso il basso per vederli, ma ora che ho aggiunto il LinearLayout allegato alla parte inferiore dello schermo con lo AdView all'interno di I scroll down e I ' Non riesco a vedere l'ultimo elemento di RecyclerView. Allego lo LinearLayout in basso ma sembra che sia sopra lo RecyclerView e voglio che lo RecyclerView mostri gli elementi sullo schermo ma non dietro lo LinearLayout. È possibile?AdView allegato in fondo non mi consente di vedere l'ultimo elemento in Recyclerview

Ecco la mia XML per il layout:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:ads="http://schemas.android.com/apk/res-auto"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/rvGeneric" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scrollbars="vertical"> 
</android.support.v7.widget.RecyclerView> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:gravity="center"> 

    <com.google.android.gms.ads.AdView 
     android:id="@+id/adViewBaseRefresh" 
     android:layout_width="fill_parent" 
     android:layout_height="53dp" 
     ads:adSize="BANNER" 
     ads:adUnitId="@string/banner_ad_unit_id" 
     android:layout_marginBottom="3dp"> 
    </com.google.android.gms.ads.AdView> 

</LinearLayout> 

+0

Per quello che stai facendo, puoi anche cambiarlo in LinearLayout e quindi impostare il peso per t he adView in basso – Geoff

+0

@Scarica il peso? Come lo faccio? – Nahue

+0

android: layout_weight = "0,1" – Geoff

risposta

3

Un layout relativo bisogno rapporti "relativo" definiti all'interno del XML. Poiché non ne hai (oltre ad allineare il layout lineare sul fondo), il risultato è LL e RecyclerView si sovrappongono.

aggiungere la riga Android: layout_below = "@ id/rvGeneric" per il layout lineare

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:ads="http://schemas.android.com/apk/res-auto"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/ll_ad" 
     android:layout_alignParentBottom="true" 
     android:gravity="center"> 

     <com.google.android.gms.ads.AdView 
      android:id="@+id/adViewBaseRefresh" 
      android:layout_width="fill_parent" 
      android:layout_height="53dp" 
      ads:adSize="BANNER" 
      ads:adUnitId="@string/banner_ad_unit_id" 
      android:layout_marginBottom="3dp"> 
     </com.google.android.gms.ads.AdView> 

    </LinearLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/rvGeneric" 
     android:layout_above="@id/ll_ad" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical"/> 

</RelativeLayout> 
+0

Ciao, grazie per aver risposto! Ci ho appena provato ma non ha funzionato. Cos'altro potrebbe essere sbagliato? – Nahue

+0

La risposta di Geoff di un LinearLayout è probabilmente più semplice ... ma ho anche modificato il mio per lavorare su RelativeLayout. Il Linearlayout è ora definito per primo, quindi i contenuti di RecyclerView - RelativeLayout possono essere difficili da ottenere. – FishStix

+0

Questo ha funzionato perfettamente, grazie! – Nahue

0

Per questo mi piacerebbe personalmente uso un LinearLayout come di seguito:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    tools:context="com.example.geoff.stackoverflowtesting.MainActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <TextView 
       android:id="@+id/rvGeneric" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:text="TESTING2" 
       android:background="#FFF000" 
       android:textSize="200dp" 
       android:scrollbars="vertical"> 
      </TextView> 
     </LinearLayout> 
    </ScrollView> 
    <TextView 
     android:id="@+id/adViewBaseRefresh" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="TESTING" 
     android:textSize="30dp" 
     android:textColor="#FFF000" 
     android:background="#000000" 
     android:layout_marginBottom="3dp" 
     android:layout_weight="0.1"> 
    </TextView> 
</LinearLayout> 

Se particolarmente then a use a RelativeLayout then:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    tools:context="com.gfaiers.layoutexamples.MainActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 
      <android.support.v7.widget.RecyclerView 
       android:id="@+id/rvGeneric" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scrollbars="vertical"> 
      </android.support.v7.widget.RecyclerView> 
     </LinearLayout> 
    </ScrollView> 
    <com.google.android.gms.ads.AdView 
     android:id="@+id/adViewBaseRefresh" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     ads:adSize="BANNER" 
     ads:adUnitId="@string/banner_ad_unit_id" 
     android:layout_marginBottom="3dp"> 
    </com.google.android.gms.ads.AdView> 
</RelativeLayout> 
+0

Ciao Geoff, entrambi i codici non funzionano = ( – Nahue

+0

Fammi solo avviare Android Studio, darò loro un test e lo prendo per te. Ugh, ho un enorme aggiornamento da fare per questo ... Datemi un while – Geoff

+0

Ci scusiamo per il ritardo, ho dovuto fare un grande aggiornamento.Ho appena provato il n.1 e funziona per me, ho aggiornato il codice per mostrare cosa ho per esso. Come puoi vedere se esegui questo , la vista testuale nera + gialla è bloccata in fondo e occupa tutto lo spazio necessario, dando il resto alla visualizzazione per pagina. Puoi comunque visualizzare tutto il contenuto di quanto sopra, basta trascinare verso il basso/scorrere verso il basso. – Geoff

Problemi correlati