0

1.iはいくつかのrecyclerviewsを実装しましたが、アイテムの中には空きスペースがあります。このスペースは、スクロールした後に消えることがあります。私はあなたが考えることができるあらゆる方法を試みました!私はコンテンツをラップするために高さを変更しましたが、まだ問題はあります!RecyclerViewアイテム間の余分な空きスペース

ここにスクリーンショットさ: Recyclerview empty space

ここでは、アイテムxmlです:

<android.support.v7.widget.CardView 
    android:id="@+id/btn" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#ffffff" 
    android:gravity="center" 
    android:orientation="horizontal" 
    android:adjustViewBounds="true" 
    android:padding="8dp" 

    android:layout_margin="6dp" 

    > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <ImageView 
      android:id="@+id/banner_image" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="true" 
      android:src="@drawable/no_image_banner" /> 

     <TextView 
      android:id="@+id/txtHey" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="4dp" 
      android:gravity="center" 
      android:maxLength="20" 
      android:text="sadas" 
      android:textColor="#4d4a46" 
      android:textSize="11dp" 

      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/txtHi" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="2dp" 
      android:gravity="center" 
      android:text="sadas" 
      android:textColor="#999999" 
      android:textSize="9dp" /> 

     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:gravity="center_vertical"> 

      <TextView 
       android:id="@+id/txtPrice" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:text="sadas" 
       android:textColor="#888888" 
       android:textSize="9dp" /> 

      <LinearLayout 
       android:id="@+id/price_cancel" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="6dp" 
       android:background="#888888" 
       android:orientation="horizontal" /> 
     </FrameLayout> 

     <TextView 
      android:id="@+id/txtFinalPrice" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="sadas" 

      android:textColor="#3dc24d" 
      android:textSize="9dp" /> 

     <TextView 
      android:id="@+id/txtHello" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:text="hey" 
      android:textSize="9dp" 
      android:visibility="gone" /> 
    </LinearLayout> 
</android.support.v7.widget.CardView> 

メインページのxml:

<android.support.design.widget.AppBarLayout 
    android:id="@+id/topBar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <include 
     layout="@layout/toolbar_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</android.support.design.widget.AppBarLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/product_list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="6dp" 
     > 

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

    <TextView 
     android:id="@+id/request_results" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:textSize="21dp" 
     android:textStyle="bold" /> 
</RelativeLayout> 

  1. 2番目の質問は、スクロールの問題を防ぐために、ネストされたスクロールビュー内でrecyclerviewsを使用しています。すべてが良いですが、kitkatのようなアンドロイドの下のバージョンでは、スクロールに問題があります(ネストされた原因はsdk <で動作しません)。私は両方のバージョンで正常に動作する通常のスクロールビューを使用することができますが、通常のスクロールビューはコーディネーターレイアウトでは機能しないため、Appbarレイアウトの隠蔽動作は動作しません!

これらの問題をお手伝いできますか?

private ArrayList<Struct> structs; 
OnItemListener onItemListener; 
private boolean isGrid; 
private int Tab; 

public Adapter_Recycler(ArrayList<Struct> structs, OnItemListener onItemListener, int Tab, boolean isGrid) { 
    this.structs = structs; 
    this.onItemListener = onItemListener; 
    this.Tab = Tab; 
    this.isGrid = isGrid; 
} 


@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = null; 


    if (Tab == 2) { 
     view = inflater.inflate(R.layout.item_product_color, parent, false); 
    } 
    if (Tab == 1 && isGrid == false) { 
     view = inflater.inflate(R.layout.item_product_list, parent, false); 
    } 
    if (Tab == 1 && isGrid) { 
     view = inflater.inflate(R.layout.item_product_list, parent, false); 
    } 

    ViewHolder viewHolder = new ViewHolder(view); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, final int position) { 
    if (Tab == 2) { 
     holder.txtHey.setText(structs.get(position).hey); 
     holder.txtPrice.setText(structs.get(position).hi); 
     holder.txtHi.setVisibility(View.GONE); 
     holder.PriceCancel.setVisibility(View.GONE); 
     holder.txtFinalPrice.setVisibility(View.GONE); 
     holder.txtHey.setTypeface(Activity_Main.SANS); 
     holder.txtPrice.setTypeface(Activity_Main.SANS); 
     Glide 
       .with(Activity_Main.CONTEXT) 
       .load(structs.get(position).image) 
       .placeholder(R.drawable.background_card) 
       .fitCenter() 
       .into(holder.banner_image); 
    } 

    if (Tab == 1) { 
     holder.txtHey.setText(structs.get(position).hey); 
     holder.txtHi.setText(structs.get(position).hi); 
     holder.txtPrice.setText(structs.get(position).price); 
     holder.txtFinalPrice.setText(structs.get(position).final_price); 
     if (holder.txtFinalPrice.getText().toString() == "") { 
      holder.PriceCancel.setVisibility(View.GONE); 
     } else { 
      holder.PriceCancel.setVisibility(View.VISIBLE); 
     } 
     holder.txtHey.setTypeface(Activity_Main.SANS); 
     holder.txtHi.setTypeface(Activity_Main.SANS); 
     holder.txtPrice.setTypeface(Activity_Main.SANS); 
     holder.txtFinalPrice.setTypeface(Activity_Main.SANS); 
     Glide 
       .with(Activity_Main.CONTEXT) 
       .load(structs.get(position).image) 
       .placeholder(R.drawable.background_card) 
       .fitCenter() 
       .into(holder.banner_image); 
    } 
    holder.linearLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (onItemListener != null) { 
       onItemListener.onItemSelect(position); 
      } 
     } 
    }); 

    holder.txtHello.setText(structs.get(position).hello); 
    holder.txtHello.setTypeface(Activity_Main.SANS); 


} 


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


public static class ViewHolder extends RecyclerView.ViewHolder { 

    CardView linearLayout; 
    ImageView banner_image; 
    TextView txtHey; 
    TextView txtHi; 
    TextView txtHello; 
    TextView txtPrice; 
    TextView txtFinalPrice; 
    LinearLayout PriceCancel; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     linearLayout = (CardView) itemView.findViewById(R.id.btn); 
     banner_image = (ImageView) itemView.findViewById(R.id.banner_image); 
     txtHey = (TextView) itemView.findViewById(R.id.txtHey); 
     txtHi = (TextView) itemView.findViewById(R.id.txtHi); 
     txtHello = (TextView) itemView.findViewById(R.id.txtHello); 
     txtPrice = (TextView) itemView.findViewById(R.id.txtPrice); 
     txtFinalPrice = (TextView) itemView.findViewById(R.id.txtFinalPrice); 
     PriceCancel = (LinearLayout) itemView.findViewById(R.id.price_cancel); 
    } 
} 

}

+0

リサイクルアイテムにxmlを追加したことを確認します。「RecyclerView」が追加された場所とアダプタについて追加してください。また、 'RecyclerView '、つまり' LayoutManager'、 'Adapter'などがどこに設定されているのかを示します。あなたが直面している問題と望ましい結果を別々に述べてみてください。 – Abbas

+0

はFYI:これらの属性はcardview 'アンドロイドには適用されません:オリエンテーション= "横" アンドロイド:adjustViewBounds = "true" を アンドロイド:パディング= "8DP" アンドロイド:背景を= "#1 FFFFFF" ' – k0sh

+0

OK、しかしではないthatsの問題! 私はちょうど線形レイアウトとviceversaにcardviewを変更し、これらの余分な属性がそこにあります! @ k0sh –

答えて

0

私は最終的に問題が何かを理解しました! 余分なスペースがあったのは、
".placeholder(R.drawable.background_card)"です。

プレースホルダを削除した後に問題が解決しました。

もちろん画像には問題ありません!プレースホルダーではありません。

0

LayoutInflaterとonCreateViewHolderといくつかの問題になる可能性があるため、アダプタクラスを提供可能な場合:ここ

は、アダプタクラスです。

+0

私はアダプタクラスを追加しました –

関連する問題