2017-03-09 3 views
0

このレイアウトには2つのリサイクルビューが含まれています.1つは水平、もう1つは垂直です。今度は垂直リサイクラビューをスクロールすると、画面全体が垂直方向にスクロールされます。どうやってするの ?2つのリサイクラビューを縦方向にスクロール可能にする方法。どちらが水平でもう1つが垂直か

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical">  

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_horizontal" 
     android:layout_width="match_parent" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="10dp" 
     android:layout_height="wrap_content" 
     android:background="#FFF" /> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/recycler_home" 
     android:clipToPadding="false" 
     android:scrollbars="vertical" 
     android:background="#FFF"> 

    </android.support.v7.widget.RecyclerView> 
</RelativeLayout> 

答えて

0

垂直リサイクラビューの最初の行を水平スクロールRecyclerViewとして作成します。

これは、位置に基づいて別のViewTypeを追加することによって実行できます。

このスケルトンアダプタを確認してください。

public class Adapter_HeaderView extends RecyclerView.Adapter<Adapter_HeaderView.ViewHolder> { 
    private final int VIEW_TYPE_HEADER = 1, VIEW_TYPE_CONTENT = 2; 
    private Context context; 
    private List<Object> list; 

    public Adapter_HeaderView(Context context, List<Object> list) { 
     this.context = context; 
     this.list = list; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     int layoutID; 
     switch (viewType) { 
      case VIEW_TYPE_CONTENT: 
       // content row layout 
       layoutID = R.layout.row_list; 
       break; 
      case VIEW_TYPE_HEADER: 
       // header row layout 
       layoutID = R.layout.row_list_header; 
       break; 
      default: 
       layoutID = R.layout.row_list; 
       break; 

     } 
     return new ViewHolder(LayoutInflater.from(context).inflate(layoutID, parent, false)); 
    } 
// override the getItemViewType to return position based on position 
    @Override 
    public int getItemViewType(int position) { 
     if (position == 0) { 
      return VIEW_TYPE_HEADER; 
     } else 
      return VIEW_TYPE_CONTENT; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, final int position) { 
     if (getItemViewType(position) != VIEW_TYPE_HEADER) { 
      // load content layout here 
      // access all items of list as list.get(position-1); as dummy item added as the first element 
     } else { 
     // load header layout components here. 
      } 
    } 

    @Override 
    public int getItemCount() { 
     // add a dummy item in item count which will be the recycler view header. 
     return list.size() + 1; 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder { 
     public ViewHolder(View itemView) { 
      super(itemView); 
     } 
    } 
} 

ここでは、row_list_headerをrecyclerviewとして作成します。

+0

レイアウト全体を縦にしたいと思っています。私は1つのRecyclerViewが水平で、もう1つが垂直である2つのRecyclerViewを持っています。 垂直リサイクラビューをスクロールすると、水平RecyclerViewも上に移動する必要があります。つまり、垂直方向にスクロールすると画面全体が上に移動するはずです。 –

+0

はい。それが示唆されているものです。上記の答えを確認してみてください。それは動作し、それを試しました! – MadScientist

+0

大丈夫です。それはScrollViewを通じて行うことができますか? –

関連する問題