2014-10-26 99 views
0

我想以与ViewPager(垂直)类似的方式使用RecyclerView。设置RecyclerView中儿童的身高?

我已经设置了投掷和滚动手势,所以视图以与ViewPager完全相同的方式滚动,但现在我想为每个子视图设置子视图(LinearLayoutManager)和LinearLayout以填充屏幕而不是wrap_content。我已经对match_parent和fill_parent做了所有的视图,但是这不起作用。

我这样做:

holder.layout.setMinimumHeight(this.recyclerView.getMeasuredHeight());

这是很好,但当方向改变,然后布局溢出屏幕,使平滑滚动/手势闪烁等我不希望它溢出屏幕。

任何好的提示如何使它正确,所以所有的孩子都布置到屏幕的最大高度,但不溢出?

感谢

编辑:我改变设定最低高度,以这样的:

holder.layout.setLayoutParams(新LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,this.recyclerView.getHeight()));

它解决了闪烁的问题,但有没有更好的办法?

回答

0

我有很低的声誉,所以无法评论。那就是为什么在这里回答。

过度过来的溢出问题可以说你有一个这样

<?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> 
现在

在适配器中单个项目对XML得到这个布局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的方向。

希望它能起作用:)