2016-07-29 6 views
5

ich diesen EffektMake Breite von horizontalem Recycler Ansicht Artikel 70% der Bildschirmbreite

zu schaffen versuchen
[![Design image][1]][1] 


    [1]: http://i.stack.imgur.com/SCMA5.jpg 

Ich verwende eine Recycler Aussicht, aber mein Problem ist, dass jede Karte ist 100% der Breite der Bildschirm zu 70%.

ist der XML-Code für jedes Element

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:layout_margin="@dimen/scale_20dp" 
    android:id="@+id/rowLayout" 
    > 



     <LinearLayout 
      android:id="@+id/button_parent" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

      <android.support.v7.widget.CardView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/card_view" 
       > 



      <LinearLayout 
       android:id="@+id/currentYear" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/paymentscreengrey" 
       android:orientation="vertical" 
       android:layout_gravity="center" 
       android:gravity="center" 
       android:paddingTop="@dimen/scale_50dp" 
       android:paddingLeft="35dp"> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="**** **** **** 5432" 
        android:textSize="@dimen/scale_20dp" 
        android:textColor="@color/white" 
        android:layout_marginTop="@dimen/scale_20dp" 
        /> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="2345" 
        android:textSize="@dimen/scale_16dp" 
        android:textColor="@color/white" /> 



       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="match_parent" 
        android:orientation="horizontal" 
        android:paddingRight="@dimen/scale_20dp" 
        android:paddingTop="@dimen/scale_15dp" 
        > 




        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="PERSONAL" 
         android:fontFamily="bold" 
         android:textColor="@color/white" 
         android:textSize="18dp" 
         android:textStyle="bold" /> 



        <View 
         android:layout_width="0dp" 
         android:layout_height="0dp" 
         android:layout_weight="1" 
         /> 



        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="match_parent" 
         android:text="@string/title_valid_up_to" 
         android:textColor="@color/white" 
         android:textSize="10dp" /> 
        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="12/15" 
         android:layout_marginLeft="10dp" 
         android:textColor="@color/white" 
         android:textSize="@dimen/text_18" 
         /> 



       </LinearLayout> 


      </LinearLayout> 




    </android.support.v7.widget.CardView> 

     </LinearLayout> 



</LinearLayout> 

Hier wird die XML-Datei für Ansicht ist, dass die Recycler Ansicht

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

    <android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/rv" 
     /> 

</LinearLayout> 



and finally the recycler view 

    package com.heyjude.heyjudeapp.adapter; 

    import android.app.Activity; 
    import android.graphics.Point; 
    import android.support.v7.widget.CardView; 
    import android.support.v7.widget.RecyclerView; 
    import android.view.Display; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.LinearLayout; 

    import com.heyjude.heyjudeapp.R; 
    import com.heyjude.heyjudeapp.model.Card; 

    import java.util.ArrayList; 
    import java.util.List; 


    public class CheckOutCardRecycler extends RecyclerView.Adapter<CheckOutCardRecycler.CardViewHolder>{ 

     private List<Card> checkOutCard; 
     private int screenWidth; 


     public CheckOutCardRecycler(Activity activity, List<Card> checkOutCard){ 

      Display display = activity.getWindowManager().getDefaultDisplay(); 
      Point size = new Point(); 
      display.getSize(size); 
      this.screenWidth = size.x; 
      this.checkOutCard = checkOutCard; 
     } 

     public static class CardViewHolder extends RecyclerView.ViewHolder { 
      CardView card; 
      LinearLayout row; 



      CardViewHolder(View itemView) { 
       super(itemView); 
       row = (LinearLayout)itemView.findViewById(R.id.rowLayout); 
       card = (CardView)itemView.findViewById(R.id.card_view); 


      } 
     } 

     @Override 
     public int getItemCount() { 
      return checkOutCard.size(); 
     } 

     @Override 
     public CardViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
      View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_checkout_cards, viewGroup, false); 
      CardViewHolder pvh = new CardViewHolder(v); 
      return pvh; 
     } 

     @Override 
     public void onBindViewHolder(CardViewHolder cardViewHolder, int i) { 




      } 

      @Override 
      public void onAttachedToRecyclerView(Recycler View recyclerView) { 
       super.onAttachedToRecyclerView(recyclerView); 
      } 

    } 
+0

statt Recycler anzeigen können Sie Ansicht Pager verwenden, die über diese Funktion verfügt, die standardmäßig erforderlich [siehe diese] (http://stackoverflow.com/questions/9907748/viewpager-get-a-partially-Ansicht-der-nächsten-Seite) – SaravInfern

+0

Können Sie einem viewpager Elemente dynamisch hinzufügen? –

+0

Ja, Sie können Ansicht für Pager dynamisch hinzufügen/entfernen – SaravInfern

Antwort

5

zwei Möglichkeiten, dies zu tun wirklich hält.

1) Verwenden Sie eine benutzerdefinierte Ansicht für Ihre Recyclingansicht. Überschreiben Sie onMeasure, um die Breite auf 70 Prozent des Bildschirms zurückzusetzen.

2) Stellen Sie in Ihrem Recycler View-Adapter beim Erstellen der Ansicht die Breite auf 70 Prozent der Bildschirmbreite ein.

In beiden Fällen erhalten Sie die Bildschirmgröße vom Display und multiplizieren Sie einfach die Breite mit .7. Im ersten Fall stellen Sie das als EXACT gemessene Breite ein, im zweiten Fall setzen Sie es im Layout-Parameter. Die zweite ist wahrscheinlich ein bisschen einfacher.

+0

Ich versuchte 2 und es hat nie funktioniert, obwohl es die Größe der Ansicht die Größe aller Elemente auf der Unterseite und links des Elements vom Bildschirm verschwunden geändert. Würde ich nicht das gleiche Problem haben, wenn ich Ihre erste Antwort versuchte? –

-2

Versuchen Sie, LinearLayout mit PercentRelativeLayout zu ändern, um die RecyclerView zu "wickeln" und legen Sie dann die Breite auf 70% fest.

ändern diese:

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

    <android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/rv" 
     /> 

</LinearLayout> 

mit diesem:

<android.support.percent.PercentRelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

     <android.support.v7.widget.RecyclerView 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      app:layout_widthPercent="70%" 
      android:id="@+id/rv" 
      /> 

EDIT

Seit Bibliothek Prozent Unterstützung zusammen mit Android Support Library 23 kommt also bitte sicher, dass Sie Android aktualisieren Unterstütze Bibliothek im SDK Manager auf die neueste Version (eigentlich 24). Und dann eine Abhängigkeit wie unten in build.gradle Datei hinzufügen:

compile 'com.android.support:percent:24.0.0' 
+0

Leider hat das nie funktioniert, es hat den Recycler nur 70% der Breite anstatt der darin enthaltenen Elemente angezeigt. Haben Sie sich das Bild angesehen, das ich hinzugefügt habe, um zu zeigen, wonach ich suche? –

Verwandte Themen