2016-07-29 196 views
5

我想創建製作寬屏幕的70%的寬度

[![Design image][1]][1] 


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

我使用的是回收的看法,但我的問題這樣的效果,是每個卡的寬度的100%屏幕爲70%。

下面是每個項目

<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> 

這裏的XML代碼的視圖中的XML文件保存在回收站視圖真的這樣做的

<?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

而不是回收查看您可以使用具有此功能,您需要通過默認視圖尋呼機[詳見本(http://stackoverflow.com/questions/9907748/viewpager-get-a-partial-view-of-the-the-page) – SaravInfern

+0

你可以動態地將項目添加到viewpager嗎? –

+0

是的,你可以添加/刪除視圖動態查看尋呼機 – SaravInfern

回答

5

兩種方式。

1)爲您的回收視圖使用自定義視圖。 Override onMeasure將其寬度返回爲屏幕的70%。

2)在您的Recycler View適配器中,創建視圖時,將其寬度設置爲屏幕寬度的70%。

無論哪種情況,您都可以從人機界面獲得屏幕大小,並將寬度乘以.7。在第一種情況下,您將其設置爲EXACT測量寬度,在第二種情況下將其設置爲佈局參數。第二個可能更容易一些。

+0

我嘗試了2,它從來沒有工作,雖然它調整了視圖的大小,該項目的底部和左側的所有項目消失在屏幕之外。 如果我試過第一個答案,我會不會面臨同樣的問題? –

-2

嘗試更改LinearLayoutPercentRelativeLayout以「包裝」RecyclerView,然後將其寬度設置爲70%。

更改此:

<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> 

有了這個:

<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" 
      /> 

編輯

自%的支持庫與Android支持庫23走來所以請確保您更新的Android SDK Manager中的支持庫到最新版本(實際上是24)。然後添加像下面的依賴在build.gradle文件:

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

不幸的是,從來沒有工作,它只是使回收者視圖70%的寬度,而不是其中的項目 你看看我添加的圖片,以顯示我在找什麼? –