2016-11-02 3 views
0

Я хочу иметь recyclerView с фиксированным числом строк, не прокручиваемым, и каждая строка также имеет фиксированную высоту, чтобы заполнить весь экран. Например, у меня было 4 строки, поэтому высота строки должна быть recyclerView height/4.RecyclerView с фиксированным числом строк

расположение строк .xml

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@drawable/border" 
android:clickable="true" 

> 
<ImageView 
    android:id="@+id/ivImage" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    android:scaleType="centerCrop" 
    android:src="@drawable/carte_recto" 
    app:layout_collapseMode="parallax" 
    app:layout_collapseParallaxMultiplier="0.7" 
    android:layout_margin="0dp" 
    android:padding="0dp" 
    android:background="@color/colorPrimary"/> 

RecyclerView: Код

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="0dp" 
    android:padding="0dp" 
    android:scrollbars="none" /> 

Java:

mRecyclerView.setHasFixedSize(true); 
    GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(),1, LinearLayoutManager.VERTICAL, false); 
    mRecyclerView.setLayoutManager(gridLayoutManager); 
    mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), onItemClickListener)); 
    mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 
    mRecyclerView.setAdapter(storeAdapter); 
    storeAdapter.notifyDataSetChanged(); 

Любые идеи?

+2

Почему бы не использовать «LinearLayout» с вертикальной ориентацией и одинаковым весом для каждого элемента? – Pelocho

+0

В случае изменения количества строк, в один прекрасный день, возможно, будет легко добавить новый элемент в список, чем добавить новое представление. – Rockers23

+0

Вы можете сделать это программно, получить высоту родительского макета, где находится recyclerview, и разделить эту высоту на 4, что будет высотой элемента recyclerview. Теперь установите эту высоту в элемент recyclerview, где вы раздуваете представление. – Apurva

ответ

0

Вы можете использовать менеджер Grid Layout с пролетом 4.

layoutManager = new GridLayoutManager(getContext(), **4**, GridLayoutManager.VERTICAL, false); 
mRecyclerView.setLayoutManager(layoutManager); 
0

В вашем адаптере

@Override 
public int getItemCount() { 
    return 4; 
} 

, возвращая определенное количество, вы можете исправить число итераций.

Если вы хотите, чтобы сделать его не прокручиваются, а затем return 1 в getCount() и определить 4 пунктов в вашем MyRow.xml и использовать weight_sum.

Смежные вопросы