Floating Action Button blocking other components

后端 未结 6 2332
粉色の甜心
粉色の甜心 2021-02-19 01:41

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

相关标签:
6条回答
  • 2021-02-19 02:27

    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 
    }
    
    0 讨论(0)
  • 2021-02-19 02:27

    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.

    0 讨论(0)
  • 2021-02-19 02:36

    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.

    0 讨论(0)
  • 2021-02-19 02:38

    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));
    
    0 讨论(0)
  • 2021-02-19 02:38

    Add bottom padding to the RecyclerView. Also, don't use android:layout_height="wrap_content" unless you've overridden onMeasurein 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.

    0 讨论(0)
  • 2021-02-19 02:41

    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" />
    
    0 讨论(0)
提交回复
热议问题