Android layout_below not showing
I am trying to position my RecyclerView so that it is below my AppBarLayout, however the layout_below attribute is not being recognised by android studio? It does not show in the auto-complete.
<?xml version="1.0" encoding="utf-8"?> <FrameLayout 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" tools:context=".Fragment.SearchFragment"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bar" android:background="?android:attr/windowBackground"> <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground" android:id="@+id/toolbar"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_search_light" android:layout_marginRight="10dp"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/search_bar" android:background="@android:color/transparent" android:hint="Search..." android:layout_marginStart="10dp" android:layout_marginLeft="10dp"/> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler_view" /> </FrameLayout>
Please change your layout as below. Used LinearLayout
with property android:orientation="vertical"
instead of FrameLayout
.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" tools:context=".Fragment.SearchFragment" android:orientation="vertical"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bar" android:background="?android:attr/windowBackground"> <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground" android:id="@+id/toolbar"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_search_light" android:layout_marginRight="10dp"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/search_bar" android:background="@android:color/transparent" android:hint="Search..." android:layout_marginStart="10dp" android:layout_marginLeft="10dp"/> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler_view" /> </LinearLayout>
Layout_Below exists in the relativeLayout , if you want to get access to that , you may need to switch to RelativeLayout or Alternativaly use linear layout if you want to put views one under the other by setting the orientation to vertical .
This is not correct. A RecyclerView should never go underneath an AppBarLayout. What you should do is ensure that there is sufficient margin between the RecyclerView and the AppbarLayout
you need the layout like ConstraintLayout, RelativeLayout and LinearLayout.
example:
ConstraintLayout :
<?xml version="1.0" encoding="utf-8"?> <FrameLayout 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:app="http://schemas.android.com/apk/res-auto"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bar" android:background="?android:attr/windowBackground"> <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground" android:id="@+id/toolbar"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_search_light" android:layout_marginRight="10dp"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/search_bar" android:background="@android:color/transparent" android:hint="Search..." android:layout_marginStart="10dp" android:layout_marginLeft="10dp"/> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView app:layout_constraintTop_toBottomOf="@id/bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler_view" /> </androidx.constraintlayout.widget.ConstraintLayout> </FrameLayout>
RelativeLayout :
<?xml version="1.0" encoding="utf-8"?> <FrameLayout 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:app="http://schemas.android.com/apk/res-auto"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bar" android:background="?android:attr/windowBackground"> <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground" android:id="@+id/toolbar"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_search_light" android:layout_marginRight="10dp"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/search_bar" android:background="@android:color/transparent" android:hint="Search..." android:layout_marginStart="10dp" android:layout_marginLeft="10dp"/> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:layout_below="@id/bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler_view" /> </RelativeLayout>
LinearLayout:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout 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:app="http://schemas.android.com/apk/res-auto"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bar" android:background="?android:attr/windowBackground"> <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground" android:id="@+id/toolbar"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_search_light" android:layout_marginRight="10dp"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/search_bar" android:background="@android:color/transparent" android:hint="Search..." android:layout_marginStart="10dp" android:layout_marginLeft="10dp"/> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler_view" /> </LinearLayout> </FrameLayout>