这是一个简短的问题:
假设我有一个具有未定义项目数量的RecyclerView,我应该怎么做,这样如果有少量项目(全部)可以适合屏幕,它们将居中并且用户赢了“能够滚动吗?
当然,如果有太多的项目,不适合屏幕,我想让RecyclerView正常显示它们(从一开始到它可以显示多少,并允许滚动)。< / p>
要理解我的意思,我认为使用ScrollView(或水平的HorizontalScrollView)以及将重力设置为居中的LinearLayout可以实现这一点。
答案 0 :(得分:3)
好的,我想我找到了办法:
首先,我们等待RecyclerView完成其布局过程,因为我发现了here。
然后,您需要检查显示哪些子视图(在您使用的LayoutManager中可用),并查看第一个和最后一个。
如果它们都与总项目的那些完全相同,则意味着显示了所有需要的视图,因此我可以根据空间在RecyclerView的两侧(或其容器上的填充)添加边距那就离开了。
答案 1 :(得分:1)
我找到了一种复杂的方法来实现这一目标。
主要概念:在代码中动态设置RV的高度
RecyclerView rv= (RecyclerView) findViewById(R.id.rv);
rv.setAdapter(new MySlideUpAdapter());
rv.setLayoutManager(new LinearLayoutManager(this));
ViewGroup.LayoutParams layoutParams = rv.getLayoutParams();
layoutParams.height=100;
rv.setLayoutParams(layoutParams);
您可能需要通过子计数* childheight计算RV的高度以获得预算值。并且不要忘记将高度与父布局高度进行比较,确保RV的高度小于其父布局高度。
这是我的布局
<RelativeLayout...>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_centerInParent="true"
android:layout_width="match_parent"
<-height will be changed in code, ignore the 50dp->
android:layout_height="50dp">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>