The new Material Design of Google recommends to use floating action buttons to draw attention to the user for the main action on that screen. There are quite a lot of examples o
While loading the list, You can create a flag and find if the item in the list is last visible item in the screen,than hide the floating button.
use this to find last visible item
int currentPosition = list.getLastVisiblePosition();
You will get the last number of the item.i.e if 7th item is last visible in your list,than it will return value of currentPosition = 7;
Once you get the number of items that fit in your screen,Now check for the flag
if(listAdapterItemsArray.get(position) == currentPosition) {
//hide button
} else {
//nothing
}
You can set the position of google action button to left top using
`android:layout_gravity="top|left"`
This way it looks good and doesn't hide anything.
Add a blank View with the same height as floating button in footer of list. So when you scroll your list, last item will come up and floating button will not hide last item of list. This is a simple and quick solution.
I just had this issue now, and I solved it this way:
public void addBlankSpace(ListView listView)
{
Space space = new Space(listView.getContext());
space.setMinimumHeight(Core.dpToPx(50));
listView.addFooterView(space);
}
And I guess there is always a better way. like checking if you even need it. and only then to display it. but for now, this simple code works just fine.
And here is the conversion function:
public static int dpToPx(int dp)
{
return (int)(dp * Resources.getSystem().getDisplayMetrics().density);
}
Or we can just add some padding:
listView.setPadding(0, 0, 0, Core.dpToPx(50));
Add bottom padding to the RecyclerView
. Also, don't use android:layout_height="wrap_content"
unless you've overridden onMeasure
in the layout manager
. Current layout managers do not yet support wrap content.
Add the attribute android:clipToPadding="false"
to achieve the goal. As mentioned in comments.
I just do what I think the Google Gmail app is doing and add padding to the RecyclerView (or ListView). Remember to set clipToPadding
to false
so that the RecyclerView
behaves correctly when it is inside a CoordinatorLayout
.
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="100dp" />