2016-07-25 16 views
2

私はカードに表示するアイテムがあります。リサイクルビューでは水平に表示してください。RecyclerViewを横方向にスクロールして幅を

私はhorizo​​ntalScrollView内にcardViewを配置しようとしましたが、それは個人カードをスクロールするように働いていました。右端の項目を見るために、RecyclerView全体をスクロールしてスクロールしたかったのです。

Horizo​​ntalScroolViewの内部でRecyclerViewを試してみました。 NestedScrollView内のRecyclerViewは機能しませんでした。

RecyclerViewはフラグメント内にあります。 viewPager tabLayout内部では、これはフラグメント

フラグメントXMLのいずれかです。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal">  
    <android.support.v7.widget.RecyclerView 
    android:id="@+id/record_recycler" 
    android:layout_width="550dp" 
    android:scrollbars="horizontal" 
    android:layout_height="0dp" 
    android:layout_weight="1" /> 
</LinearLayout> 

アダプタ:

public class TestAdapter extends RecyclerView.Adapter{ 
    private List<Model> items; 
    Context context; 
    public TestAdapter(Context con, List<Model> itemslist) { 
     context=con; 
     this.items = itemslist; 
    } 

@Override 
public int getItemViewType(int position) { 
    return items.get(position).getUnique(); 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    if(viewType==0) 
    return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.cricketrank_record_valuecard, parent, false)); 
else 
    return new MyViewHolder1(LayoutInflater.from(parent.getContext()).inflate(R.layout.cricketrank_record_titlecard, parent, false)); 

} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    if (holder instanceof MyViewHolder) 
    try{ 
    ((MyViewHolder)holder).bindViewHolder(position); 
    }catch (Exception e){ 
     Log.e(Constant.Tag,e.toString()); 
    } 
else if(holder instanceof MyViewHolder1) 
    try{ 
     ((MyViewHolder1)holder).bindViewHolder(position); 
    }catch (Exception e){ 
     Log.e(Constant.Tag,e.toString()); 
    } 
} 

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

public class MyViewHolder extends RecyclerView.ViewHolder{ 
    public TextView text,text1,text2,text3,text4,text5; 
    public View mCardView; 

    public MyViewHolder(View view) { 
    super(view); 
    text1 = (TextView) view.findViewById(R.id.text1); 
    text2 = (TextView) view.findViewById(R.id.text2); 
    text3 = (TextView) view.findViewById(R.id.text3); 
    text4 = (TextView) view.findViewById(R.id.text4); 
    } 

public void bindViewHolder(int position) { 

    text1.setText(items.get(position).getTeam()); 
    text2.setText(items.get(position).getRank()); 
    text3.setText(items.get(position).getMatches()); 
    text4.setText(items.get(position).getPoints()); 
} 
} 
} 

public class MyViewHolder1 extends RecyclerView.ViewHolder{ 
    public TextView text,text1,text2,text3,text4,text5; 
    public RelativeLayout rl; 

    public MyViewHolder1(View view) { 
    super(view); 
    text = (TextView) view.findViewById(R.id.text); 
    text1 = (TextView) view.findViewById(R.id.text1); 
    text2 = (TextView) view.findViewById(R.id.text2); 
    text3 = (TextView) view.findViewById(R.id.text3); 
    text4 = (TextView) view.findViewById(R.id.text4); 
    rl = (RelativeLayout) view.findViewById(R.id.rl); 
    } 

    public void bindViewHolder(int position) { 
    text1.setText(items.get(position).getTeam()); 
    text2.setText(items.get(position).getRank()); 
    text3.setText(items.get(position).getMatches()); 
    text4.setText(items.get(position).getPoints()); 

    } 
} 
} 

MainActivity:

RecyclerView record_recycler= (RecyclerView) view.findViewById(R.id.record_recycler); 
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); 
record_recycler.setLayoutManager(mLayoutManager); 
record_recycler.setItemAnimator(new DefaultItemAnimator()); 
TestAdapter adapter = new TestAdapter(getActivity(), list); 
record_recycler.setAdapter(adapter); 

答えて

0

私はあなたが2つの方向にrecyclerviewをスクロールしようとしていると思います。 Verticalは、通常のリクライクビューのスクロールであり、水平方向の場合は、上記の幅に収まらない場合のスクロールビューです。右?

あなたがこれを試しているなら、思うようにスクロールすることはできないと思います。 リサイクラビューは、異なるビューを保持している両方の方向にスクロールすることができます。

カードビューのスクロールは可能ですが、デフォルトではスクロールが正常に正常に行われません。したがって、完全に表示されず、スクロールするようにスクロール・ビューを設定すると、カード・コンテンツをユーザーに完全に表示するようにスクロールします。

考えられる方法は、ビューをフィールド名と値で垂直に保つことです。さらに作成する場合は、値を調整するためにもう1行追加します。

は、下記をご覧有無:

<android.support.v7.widget.CardView 
    android:id="@+id/card" 
    android:layout_marginTop="2dp" 
    android:layout_marginBottom="4dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
     <LinearLayout 
      android:id="@+id/layout2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/layout1" 
      android:orientation="horizontal"> 
      <TextView 
       android:text="One" 
       android:textSize="@dimen/font_itemsrow_13dp" 
       android:layout_weight=".11" 
       android:paddingLeft="3dp" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:text="Two" 
       android:textSize="@dimen/font_itemsrow_13dp" 
       android:layout_weight=".11" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:text="Three" 
       android:textSize="@dimen/font_itemsrow_13dp" 
       android:layout_weight=".24" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:text="Four" 
       android:textSize="@dimen/font_itemsrow_13dp" 
       android:layout_weight=".11" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:text="Five" 
       android:textSize="@dimen/font_itemsrow_13dp" 
       android:layout_weight=".17" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:text="Six" 
       android:textSize="@dimen/font_itemsrow_13dp" 
       android:layout_weight=".26" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/layout3" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/padding_3dp" 
      android:layout_below="@+id/layout2" 
      android:orientation="horizontal"> 
      <TextView 
       android:id="@+id/one" 
       android:textSize="@dimen/font_itemsrow_14dp" 
       android:textColor="@color/black" 
       android:layout_weight=".11" 
       android:paddingLeft="3dp" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:id="@+id/two" 
       android:textSize="@dimen/font_itemsrow_14dp" 
       android:textColor="@color/black" 
       android:layout_weight=".11" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:id="@+id/three" 
       android:textSize="@dimen/font_itemsrow_14dp" 
       android:textColor="@color/black" 
       android:layout_weight=".24" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:id="@+id/four" 
       android:textSize="@dimen/font_itemsrow_14dp" 
       android:textColor="@color/black" 
       android:layout_weight=".11" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:id="@+id/five 
       android:textSize="@dimen/font_itemsrow_14dp" 
       android:textColor="@color/black" 
       android:layout_weight=".17" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
      <TextView 
       android:id="@+id/six" 
       android:textSize="@dimen/font_itemsrow_14dp" 
       android:textColor="@color/black" 
       android:layout_weight=".26" 
       android:paddingRight="3dp" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" /> 
     </LinearLayout> 
     <LinearLayout 
     ....// Add extra title Row 
     </LinearLayout> 
     <LinearLayout 
     ....// Add extra Values Row 
     </LinearLayout> 
    </RelativeLayout> 
</android.support.v7.widget.CardView> 
0

あなたはLayoutManagerのrefrenceとそれをアーカイブすることができますあなたのケースでは、3つの引数で、MainActivityを少し変更すると、次のようになります:ドキュメントが言うのように

RecyclerView.LayoutManager mLayoutManager 
= new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false); 

、第二引数は、方向を定義:

/** 
* @param context  Current context, will be used to access resources. 
* @param orientation Layout orientation. Should be {@link #HORIZONTAL} or {@link 
*      #VERTICAL}. 
* @param reverseLayout When set to true, layouts from end to start. 
*/ 
+0

をしかし、我々は、画面サイズの後に右側にそれを持っている場合には、余分なものを見るためにスクロールしません。スクロールすると次の項目が表示されます。しかし、私は画面サイズの後に拡大される同じアイテムビューの値を見たい(非表示の内容を見るために水平方向にページをスクロールするように)。ありがとう@Mij – 12345

関連する問題