浮动操作按钮阻止其他组件

时间:2015-03-31 06:46:51

标签: android android-layout material-design

Google的新Material Design建议使用浮动操作按钮吸引用户注意该屏幕上的主要操作。在列表视图中有很多这样的例子。

现在,假设您的列表视图只有足够的项目来填充屏幕,使滚动变得不可能。如果您的列表项具有用户可以与之交互的某个组件,例如交换机或收藏的星号,则浮动操作按钮可能阻止此组件。我们该如何处理这个案子?

编辑:这实际上始终与列表中的最后一项一起发生

6 个答案:

答案 0 :(得分:8)

在列表页脚中添加一个与浮动按钮高度相同的空白视图。因此,当您滚动列表时,最后一项将出现,浮动按钮将不会隐藏列表的最后一项。这是一个简单而快速的解决方案。

答案 1 :(得分:2)

我现在才遇到这个问题,我就这样解决了:

public void addBlankSpace(ListView listView)
{
    Space space = new Space(listView.getContext());
    space.setMinimumHeight(Core.dpToPx(50));
    listView.addFooterView(space);
}

我想总会有更好的方法。比如检查你是否需要它。然后才显示它。但是现在,这个简单的代码工作正常。

这是转换功能:

public static int dpToPx(int dp)
{
    return (int)(dp * Resources.getSystem().getDisplayMetrics().density);
}

或者我们可以添加一些填充:

listView.setPadding(0, 0, 0, Core.dpToPx(50));

答案 2 :(得分:0)

加载列表时,您可以创建一个标志,并查找列表中的项目是否是屏幕中的最后一个可见项目,而不是隐藏浮动按钮。

用它来查找最后一个可见项

int currentPosition = list.getLastVisiblePosition();

如果第7项最后一次显示在列表中,您将获得item.i.e的最后一个数字,而不是它将返回currentPosition = 7的值;

获得适合您屏幕的项目数量后,立即检查标志

if(listAdapterItemsArray.get(position) == currentPosition) {
    //hide button
} else {
    //nothing 
}

答案 3 :(得分:0)

您可以使用

将Google操作按钮的位置设置为左上角
     `android:layout_gravity="top|left"`

这种方式看起来很好,并且不会隐藏任何东西。

答案 4 :(得分:0)

我只是按照我认为google gmail应用程序正在执行的操作,并向recyclelerView(或listview)添加填充。

<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" />

答案 5 :(得分:0)

RecyclerView上添加底部填充。另外,除非您在android:layout_height="wrap_content"中覆盖了onMeasure,否则请不要使用layout manager。当前的布局管理器尚不支持包装内容。

添加属性android:clipToPadding="false"以实现目标。如评论中所述。