2016-02-02 16 views
12

Próbuję pokazać dokładne (np. 3 pozycji) w RecyclerView. Nasza aplikacja internetowa pokazuje tak:Jak wyświetlić dokładną liczbę przedmiotów w oknie RecyclerView?

enter image description here

Jeśli przenieść elementy:

enter image description here

i zwolnij przycisk myszy, to automatycznie przychodzi do tego: enter image description here

W Androidzie Wyświetlam obrazy za pomocą narzędzia RecyclerView:

enter image description here

Jak wyświetlić dokładnie 3 przedmioty w widocznym obszarze RecyclerView? Jak uniknąć pokazywania "pół" przedmiotów? czy to możliwe?

RecyclerView:

 <android.support.v7.widget.RecyclerView 
      android:layout_width="wrap_content" 
      android:layout_height="130dp" 
      android:id="@+id/rvProducts" /> 

Jeden element w widoku recyklera:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:id="@+id/ivProduct" 
     android:src="@drawable/noimage"/> 

</LinearLayout> 

Kod:

LinearLayoutManager layoutManager 
      = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false); 
    RecyclerView productImageList = (RecyclerView) view.findViewById(R.id.rvProducts); 
    productImageList.setLayoutManager(layoutManager); 
    GalleryRecyclerAdapter adapter = new GalleryRecyclerAdapter(images); 
    productImageList.setAdapter(adapter); 
+0

Pokaż swój plik xml –

+0

zobacz moje edytowane pytanie –

Odpowiedz

9

Jednym rozwiązaniem jest ustawienie width każdego dziecka programowo podoba.

view.getLayoutParams().width = getScreenWidth()/VIEWS_COUNT_TO_DISPLAY; 

A rozmiar ekranu tak:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics).widthPixels; 
2

W ogólnym sposobem osiągnięcia tego celu nie jest prosta nieruchomość do przodu, że z widokiem na recykling.

Sposób ten jest osiągalny jest poprzez wysłanie w szerokości nadrzędnej do adaptera ..

W pewnym sensie suedo ..

Parent width = parent container width; 

    InitialiseRecyclerAdapter(parent width) { 
     on create view holder { 
       Set the width of ur item layout with a width that divides ur parent width in equal parts; 
      } 
} 
5

zrobiłem wyżej zadania w następujący sposób podejścia, proszę odnosi następujący kod

Na moim onCreateViewHolder() sposobie mojego RecycleView Adapter, znajduję szerokość ekranu i dzielę na sekcje . eck to raz.

@Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.MY_ITEM_TO_INFALTE, parent, false); 

     itemView.getLayoutParams().width = (int) (getScreenWidth()/NUMBERS_OF_ITEM_TO_DISPLAY); /// THIS LINE WILL DIVIDE OUR VIEW INTO NUMBERS OF PARTS 

     return new MyCreationItemAdapter.MyViewHolder(itemView); 
    } 

Z powyższego kodu getScreenWidth() metoda których używamy na powyżej jest następująca, sprawdź go.

public int getScreenWidth() { 

     WindowManager wm = (WindowManager) activity.getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 

     return size.x; 
    } 
Powiązane problemy