Navbar overlapping last ListView item (Android)-ThrowExceptions

Exception or error:

enter image description here

My problem is similar to above Image

I am getting this issue in Nexus Devices. I added margin from bottom by getting Bottom Navigation Bar height. But my application is showing extra margin from the bottom on a tablet.

I do not want to change anything in my style file.

Code:- 
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/clubhouse_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/clubhouse_toolbar_main"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:minHeight="?attr/actionBarSize"
            android:background="@android:color/holo_red_dark"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:layout_scrollFlags="scroll|enterAlways">

            <TextView
                             android:id="@+id/toolbar_title"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:textAppearance="@android:style/TextAppearance.Holo.Medium.Inverse"
                android:gravity="center"
                android:singleLine="true"
                android:maxLines="1"
                android:paddingLeft="2dp"
                android:ellipsize="end"
                android:textColor="@color/white"
                />


        </android.support.v7.widget.Toolbar>

    </android.support.design.widget.AppBarLayout>

    <ImageView
        android:id="@+id/iv_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_ab_arrowup"/>
    <FrameLayout
        android:id="@+id/drop_down_overlay_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        android:layout_marginTop="60dp"
        android:fitsSystemWindows="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>

The drop_down_overlay_container in this framelayout is where I am showing my Fragment.

How to solve:

Ok the problem is the following, the cardview match parent height is actually the full screen height with top bar. An very easy fix for this is to add:

    android:layout_marginBottom="?attr/actionBarSize"

like this:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="?attr/actionBarSize"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.jburg.empty.Main22Activity"
    tools:showIn="@layout/activity_main22"
    android:background="@color/colorAccent"/>

This works on my emulator nexus 10 tablet. Let me know if this helps you otherwise I’ll keep searching 🙂

###

did you try this

Bottom soft NavigationBar overlaps my ListView

The Only problem is that you mention you don’t want to change your style file ( didn’t mention why! ) and that user achieve your result by changing style file.

###

Try adding this line android:fitsSystemWindows="true" to the CoordinatorLayout.

###

try to add this code in imageview.

android:layout_below="@+id/clubhouse_toolbar_main"

###

Just a suggestion :
You could add a dummy button with visibility=”invisible”(not “gone”). The default height of a button is almost same as that of the Navigation Bar. So even if the Navigation bar is over the button, your important data will be fully visible(Above the navigation bar). And you don’t have to think about the button being seen.

In your case i’m assuming that you have some scrollable view in your Fragment. So you should put the button inside your fragment xml under your scrolllable view(listview, recyclerview …) or at the bottom of your fragment xml.

###

just add bottom padding same as height of bottom navigation bar in RecyclerView.

###

I was facing the similar problem. I tried with all possible solution But din’t work. Then I tried by myself by adding the View element to my parent as below:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FilterLocationActivity">

  <include layout="@layout/app_bar" />

  <ExpandableListView
    android:id="@+id/lvLocations"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:divider="@null"
    app:layout_constraintBottom_toBottomOf="@+id/tester"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/toolbar" />

  <View
    android:id="@+id/tester"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

###

It looks like something related to SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Make sure that your activity does not have this flag set in setSystemUiVisibility

Leave a Reply

Your email address will not be published. Required fields are marked *