Unable to post view below RecyclerView

I am having trouble placing Adview below RecyclerView . Currently, RecyclerView takes up the rest of the layout, and Adview does not display. None of the solutions I found on the Internet solved my problem. Usually layout_weight or layout_below solves the problem, but it is not.

XML

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:ads="http://schemas.android.com/apk/res-auto" tools:context=".MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#7c7c7c" android:focusable="true" android:focusableInTouchMode="true"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/relContainer" android:background="@drawable/bordershadow2" android:paddingBottom="17dp" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="10dp" /> <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/recycler_view" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView> <RelativeLayout android:id="@+id/relContainer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bordershadow" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TableLayout android:id="@+id/purchaseTableLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="7dp" android:paddingTop="7dp" android:layout_alignParentTop="true" android:stretchColumns="0,1,2"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:weightSum="3"> <TextView android:id="@+id/textView1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:paddingLeft="2dp" android:singleLine="true" android:textColor="#000" android:textSize="24sp" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:paddingLeft="2dp" android:singleLine="true" android:textColor="#000" android:textSize="24sp" android:textStyle="bold" /> <Spinner android:id="@+id/typeSpinner" style="style/Theme.Material" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:entries="@array/type_array" android:textSize="@dimen/title_size" /> </TableRow> </TableLayout> <EditText android:id="@+id/searchEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/purchaseTableLayout" android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'() " android:hint="Search" android:imeOptions="actionDone" android:singleLine="true" /> <TableLayout android:id="@+id/tableLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/searchEditText" android:paddingBottom="7dp" android:paddingTop="7dp" android:stretchColumns="0,1,2"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:weightSum="3.0"> <Spinner android:id="@+id/sortRaceSpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0" android:entries="@array/sort_race_array" android:textSize="@dimen/title_size" /> <Spinner android:id="@+id/sortAffinitySpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0" android:entries="@array/sort_affinity_array" android:textSize="@dimen/title_size" /> <Spinner android:id="@+id/sortSpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0" android:entries="@array/sort_array" android:textSize="@dimen/title_size" /> </TableRow> </TableLayout> </RelativeLayout> </RelativeLayout> </RelativeLayout> 
+5
source share
4 answers

I rewrote your layout file, Recycleview wrapped inside linearlayout

 <?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" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/wrapper" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginBottom="12dp" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:clipToPadding="false" android:paddingBottom="20dp" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="10dp" /> </LinearLayout> <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="match_parent" android:background="#000000" android:layout_height="60dp" android:layout_below="@+id/wrapper" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView> <RelativeLayout android:id="@+id/relContainer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/adView" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TableLayout android:id="@+id/purchaseTableLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="7dp" android:paddingTop="7dp" android:layout_alignParentTop="true" android:stretchColumns="0,1,2"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:weightSum="3"> <TextView android:id="@+id/textView1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:paddingLeft="2dp" android:singleLine="true" android:textColor="#000" android:textSize="24sp" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:paddingLeft="2dp" android:singleLine="true" android:textColor="#000" android:textSize="24sp" android:textStyle="bold" /> <Spinner android:id="@+id/typeSpinner" style="style/Theme.Material" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" /> </TableRow> </TableLayout> <EditText android:id="@+id/searchEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/purchaseTableLayout" android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'() " android:hint="Search" android:imeOptions="actionDone" android:singleLine="true" /> <TableLayout android:id="@+id/tableLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/searchEditText" android:paddingBottom="7dp" android:paddingTop="7dp" android:stretchColumns="0,1,2"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:weightSum="3.0"> <Spinner android:id="@+id/sortRaceSpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0"/> <Spinner android:id="@+id/sortAffinitySpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0"/> <Spinner android:id="@+id/sortSpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0" /> </TableRow> </TableLayout> </RelativeLayout> 

The result is displayed

enter image description here

If your recycleview content goes beyond the height of the display, you should consider splitting your layout into sections using android: layout_weight.

Refresh

 <?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" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/relContainer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TableLayout android:id="@+id/purchaseTableLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="7dp" android:paddingTop="7dp" android:layout_alignParentTop="true" android:stretchColumns="0,1,2"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:weightSum="3"> <TextView android:id="@+id/textView1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:paddingLeft="2dp" android:singleLine="true" android:textColor="#000" android:textSize="24sp" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:paddingLeft="2dp" android:singleLine="true" android:textColor="#000" android:textSize="24sp" android:textStyle="bold" /> <Spinner android:id="@+id/typeSpinner" style="style/Theme.Material" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" /> </TableRow> </TableLayout> <EditText android:id="@+id/searchEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/purchaseTableLayout" android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'() " android:hint="Search" android:imeOptions="actionDone" android:singleLine="true" /> <TableLayout android:id="@+id/tableLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/searchEditText" android:paddingBottom="7dp" android:paddingTop="7dp" android:stretchColumns="0,1,2"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:weightSum="3.0"> <Spinner android:id="@+id/sortRaceSpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0"/> <Spinner android:id="@+id/sortAffinitySpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0"/> <Spinner android:id="@+id/sortSpinner" style="style/Theme.Material" android:paddingTop="5dp" android:paddingBottom="10dp" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.0" /> </TableRow> </TableLayout> </RelativeLayout> <LinearLayout android:id="@+id/wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/relContainer" android:background="@color/colorPrimary" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" /> </LinearLayout> <LinearLayout android:id="@+id/wrappers" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:orientation="vertical"> <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView> </LinearLayout> 

enter image description here

+7
source

I had a view, which should be under the guise of a resizer with a dynamic size. this means that the view assumes a downward movement as the RecyclerView grows.

My solution was to add a paddingBottom to the RecyclerView and then a negative marginTop in the same value for the view, it worked fine.

 <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:paddingBottom="48dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_marginTop="-48dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 
+2
source

You can do it differently, place the Adview on the recycler at the bottom, and then add an empty ViewHolder to the adapter, which will always be your last element, you can use an empty layout with Adview height for it.

+1
source

Try adding the android:clipToPadding="false" attribute android:clipToPadding="false" to your RecyclerView.

The official documentation says about the cover of the clip:

Sets whether this ViewGroup will clamp its children in its padding and resize (but not the clip) any EdgeEffect to the padded area if padding is present.

By default, children are tied to populating their ViewGroup parent. This clipping behavior is only allowed if padding is nonzero.


In your XML layout will be:

layout.xml

 <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/relContainer" android:background="@drawable/bordershadow2" android:clipToPadding="false" android:paddingBottom="20dp" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="10dp" /> 
0
source

Source: https://habr.com/ru/post/1244165/


All Articles