我试图以类似于ViewPager(垂直)的方式使用RecyclerView。
我设置了fling和滚动手势,因此视图以与ViewPager完全相同的方式滚动,但现在我想设置子视图(LinearLayoutManager)和用于每个子视图的LinearLayout来填充屏幕而不是wrap_content。我已经将所有视图都设置为match_parent和fill_parent,但这不起作用。
我这样做了:
holder.layout.setMinimumHeight(this.recyclerView.getMeasuredHeight());
这很好但是当方向改变时,布局会溢出屏幕,这会使平滑的滚动/手势闪烁等。我不希望它溢出屏幕。
任何好的提示如何正确使所有孩子都布置到屏幕的最大高度但不会溢出?
由于
编辑:我将设置最小高度更改为:
holder.layout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,this.recyclerView.getHeight()));
解决了闪烁问题,但有更好的方法吗?
答案 0 :(得分:0)
我的声誉很低,所以无法评论。这就是为什么在这里回答。
过来溢出问题让我说你有这样的单项XMl
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:id="@+id/mainLayout" >
<-- some views --->>
</RelativeLayout>
现在在你的适配器中获取viewHolder中的这个布局
并创建一个布尔变量,您可以在其中设置adabpter ..您可以使用它来了解更改的方向。当方向改变时,改变它的值。
你的适配器中的创建一个函数 public void orientaiotnChange(){ notifyDataSetChanged(); }
在您的函数中
@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int arg1) {
if(isOrientationHorizontal){
viewHolder.Mainlayout.setOrientation(horizontal);
}
else{
viewHolder.Mainlayout.setOrientation(vertical);
}
还会更改您设置适配器的活动中的RecyclerView的方向以及您检查方向的位置是否更改。
希望它会起作用:)