Fit recyclerview Elemente auf dem android-Bildschirm

Ich bin in Schwierigkeiten! Ich habe diese RecyclerView wo ich eine GridLayoutManager zu erreichen, zwei Spalten und mehreren Zeilen.
Aber hier geht mein Problem:
Ich habe höchstens 8 Artikel in dieser RecyclerView, und ich möchte, um Sie fit nach der Größe des Displays

Bisher habe ich dieses:

Fit recyclerview Elemente auf dem android-Bildschirm

mithilfe dieses Stück code:

        Rect rectangle = new Rect();
        Window window = ((Activity)context).getWindow();
        window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
        int statusBarHeight = rectangle.top;
        int contentViewTop =
                window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
        int titleBarHeight= contentViewTop - statusBarHeight;

        final TypedArray styledAttributes = getContext().getTheme().obtainStyledAttributes(
                new int[] { android.R.attr.actionBarSize });
        int mActionBarSize = (int) styledAttributes.getDimension(0, 0);
        styledAttributes.recycle();

        int softButtonsHeight = 0;

        DisplayMetrics metrics = new DisplayMetrics();
        ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(metrics);

        DisplayMetrics realMetrics = new DisplayMetrics();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            ((Activity)context).getWindowManager().getDefaultDisplay().getRealMetrics(realMetrics);

            if(realMetrics.heightPixels > metrics.heightPixels){
                softButtonsHeight = realMetrics.heightPixels - metrics.heightPixels;
            }
        }

        ImageView img_Logo = (ImageView)rootView.findViewById(R.id.img_logo_detalhe);

        float logoHeight = 0;
        //convertendo na mão tamanho do sponsor
        if(img_Logo.getVisibility() != GONE) {
            logoHeight = 100 * context.getResources().getDisplayMetrics().density;
        }

        double sizeInPx = (metrics.heightPixels - titleBarHeight - softButtonsHeight - mActionBarSize - logoHeight) / Math.round(list.size() / 2D);

        itensAdapter = new OptionItensAdapter(context, list, (int)sizeInPx);
        rvOptions.setAdapter(itensAdapter);

und innen OptionItensAdapter Konstruktor an meinem onBindViewHolder:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, sizeInPx);
        holder.imageButton.setLayoutParams(params);

Haben Sie eine Idee haben, würde mich das erreichen?
Vielen Dank im Voraus.

Warum sind Sie mit RecyclerView? Sie sind nicht zu recyceln nichts, da Sie nicht scrollen. Verwenden Sie eine GridLayout oder TableLayout oder verschachtelte LinearLayouts oder eine ConstraintLayout.
Ich würde annehmen, als Antwort auf einige Beispiel für diese Komponenten und Ihre entsprechenden richtigen Weise verwendet werden.

InformationsquelleAutor guisantogui | 2017-03-09

Schreibe einen Kommentar