我要实现的是一个屏幕,我有一个显示列表的RecyclerView ..它可能有很多或很少的项目,当它有很多项目时,Button必须在屏幕的末尾浮动和粘滞。
如果项目很少,屏幕上有空格,则该按钮必须显示为RecyclerView列表中的最后一个元素。
按钮是一个带背景的矩形凸起按钮。是否有任何建议如何实现这样的目标。
答案 0 :(得分:1)
这样做
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:layout_gravity="bottom|center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
具有多项
时的结果什么时候有几个项目
答案 1 :(得分:1)
你可以这样做,
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weight_sum ="10">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"/>
<Button
android:text="button"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
这与上面的答案相同。但不同之处在于按钮将始终在底部与重量1对齐。
答案 2 :(得分:0)
一个选项是让按钮在列表视图上方全部浮动,并手动定位以使其显示在列表的底部。如果您控制位置,您可以确定它何时应该粘在底部。
请参阅this帖子,了解如何在运行时获取视图的高度。
view.measure(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
int height=view.getMeasuredHeight();
并查看有关如何获取屏幕高度的this文章
int screenHeight = getWindowManager().getDefaultDisplay().getHeight()
然后在你的layout.xml中你可以放
`android:layout_alignParentBottom="true"` on the element
然后使用this信息来定位按钮
现在魔术发生了
int offset = screenHeight - ButtonHeight - listHeight;
if(offset < 0) offset = 0;
btn.setTop(offset);