卡片视图之间的距离太大

时间:2016-04-05 16:02:31

标签: android android-layout android-recyclerview android-cardview recyclerview-layout

我正在使用cardview和recycler view.But之前我使用相同的代码来做任何事情没有任何问题。但现在我正在使用片段。现在我得到的卡片之间的距离更大。 我的Recycler视图适配器

 public static class DataObjectHolder extends RecyclerView.ViewHolder implements View.OnClickListener
    {
        TextView label;
        TextView dateTime;
        ImageView imageView;
        ProgressBar progressBar;

        public DataObjectHolder(final View itemView, final Context activity, final ArrayList<DataObject> myDataset) {
            super(itemView);
            label = (TextView) itemView.findViewById(R.id.textView);
            //dateTime = (TextView) itemView.findViewById(R.id.thot);
            imageView=(ImageView)itemView.findViewById(R.id.iproductimg);
            progressBar=(ProgressBar)itemView.findViewById(R.id.progress);
            Log.i(LOG_TAG, "Adding Listener");
            itemView.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {
            myClickListenerhi.onItemClick(getLayoutPosition(),v);
        }
    }



    public MyRecyclerViewAdapter(Activity context, ArrayList<DataObject> myDataset,MyClickListener myClickListener1) {
        mDataset = myDataset;
        activityContext=context;
        myClickListenerhi=myClickListener1;
    }

    @Override
    public DataObjectHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.cardview, parent, false);

        DataObjectHolder dataObjectHolder = new DataObjectHolder(view,activityContext,mDataset);
        return dataObjectHolder;
    }

    @Override
    public void onBindViewHolder(final DataObjectHolder holder, int position) {
        Context context=null;
        holder.label.setText(mDataset.get(position).getmText1());
       // holder.dateTime.setText(mDataset.get(position).getmText2());
        Drawable placeholder = holder.imageView.getContext().getResources().getDrawable(R.drawable.placeholder);
        holder.imageView.setImageDrawable(placeholder);
        //new ImageDownloaderTask(holder.imageView).execute(mDataset.get(position).getUrl());
        mDataset.get(position).setPosition(position);
            Picasso.with(activityContext)
                .load(mDataset.get(position).getUrl())
                .placeholder(R.drawable.placeholder)
                .into(holder.imageView, new Callback() {
                    @Override
                    public void onSuccess() {
                        holder.progressBar.setVisibility(View.INVISIBLE);
                    }

                    @Override
                    public void onError() {
                    }
                });
    }

    public void addItem(DataObject dataObj, int index) {
        mDataset.add(index, dataObj);
        notifyItemInserted(index);
    }

    public void deleteItem(int index) {
        mDataset.remove(index);
        notifyItemRemoved(index);
    }

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

    public interface MyClickListener {
        void onItemClick(int position, View v);
    }

}

我的cardview

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="3"
    >

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="156dp"
        android:layout_height="242dp"
        android:layout_margin="5dp"
        card_view:cardCornerRadius="2dp"
        card_view:contentPadding="5dp"
        card_view:cardBackgroundColor="#ffffff">

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

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="200dp"
                android:id="@+id/iproductimg"
                android:src="@drawable/placeholder"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:scaleType="fitXY" />
            <ProgressBar
                android:id="@+id/progress"
                style="?android:attr/progressBarStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:visibility="visible"
                android:indeterminate="false" />
            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />

            <TextView
                android:id="@+id/firstheadtxt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:layout_below="@+id/textView"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />

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


</LinearLayout>

错误 enter image description here

2 个答案:

答案 0 :(得分:3)

我通过更改

中的Cardview LinearLayout属性解决了这个问题
android:layout_width="match_parent"
 android:layout_height="match_parent"

 android:layout_width="wrap_content"
 android:layout_height="wrap_content"

修改 主要问题是recyclerviews子布局或项目布局rootview属性为match_parent。例如:如果您的子布局是基于LinearLayout构建的(比方说)。

将其更改为wrap_content

 android:layout_width="wrap_content"
 android:layout_height="wrap_content"

答案 1 :(得分:1)

在这种情况下:在cardview的布局中:

删除layout_margin="5dp"

添加

margin_top = "3dp"
margin_left = "5dp"
margin_right = "5dp"