Google的新Material Design建议使用浮动操作按钮吸引用户注意该屏幕上的主要操作。在列表视图中有很多这样的例子。
现在,假设您的列表视图只有足够的项目来填充屏幕,使滚动变得不可能。如果您的列表项具有用户可以与之交互的某个组件,例如交换机或收藏的星号,则浮动操作按钮可能阻止此组件。我们该如何处理这个案子?
编辑:这实际上始终与列表中的最后一项一起发生
答案 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"
以实现目标。如评论中所述。