2014-10-26 114 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的方向。

希望它能起作用:)