在listview中使用时,Cardview边距无法正确显示

时间:2017-05-06 09:05:33

标签: android xml android-cardview

我试图在我的片段中创建一个列表,在那里我创建了一个卡片视图并使用适配器我用卡片视图填充了列表。但我面临的问题是,在我的android studio XML布局中,你可以看到屏幕左右两侧的边距,而当我在手机上安装时,边缘没有看到!

Android studio XML设计:

Android Studio XML Design

Whats comes when I installed on my phone

我的XML代码是:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="10dp">


    <RelativeLayout
        android:id="@+id/secndLaout"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:paddingLeft="15dp"
        android:paddingTop="15dp"
        android:paddingBottom="8dp"
        android:paddingRight="15dp"
        android:background="@drawable/card_background_selector"
        android:descendantFocusability="afterDescendants"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_height="50dp"
            android:id="@+id/rlImage"
            android:layout_alignParentTop="true"
            android:layout_width="50dp">
            <ImageView
                android:id="@+id/imageId"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:scaleType="fitCenter"
                android:src="@drawable/mobeeloadicon"/>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/rlamount"

            android:layout_width="200dp"
            android:layout_alignParentTop="true"
            android:paddingLeft="8dp"
            android:layout_height="20pt"
            android:layout_toRightOf="@+id/rlImage"
            android:layout_toEndOf="@+id/rlImage"
            android:layout_marginLeft="2pt">

            <TextView
                android:text="Paid To"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/line1"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:textSize="5pt" />

            <TextView
                android:text="xxxxx878"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/line2"
                android:layout_below="@+id/line1"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:textSize="7pt" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/descp"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_toEndOf="@+id/dateLayout"
            android:layout_width="150dp"
            android:layout_toRightOf="@+id/dateLayout"
            android:layout_height="20pt">

            <!---->

            <TextView
                android:text="Credited to You"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/credit"
                android:textSize="5pt"
                android:layout_below="@+id/date"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_marginTop="2dp" />

            <TextView
                android:text="27/12/2017"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/date"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:textSize="5pt" />
        </RelativeLayout>

        <TextView
            android:id="@+id/line"
            style="?android:attr/listSeparatorTextViewStyle"
            android:gravity="center_horizontal"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#e7e7e7"
            android:layout_below="@+id/descp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="6pt" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:visibility="visible"
            android:layout_below="@+id/line"
            android:layout_height="wrap_content">
            <LinearLayout
                android:layout_width="match_parent"
                android:id="@+id/head"
                android:layout_marginTop="3.5pt"
                android:layout_weight="3.0"
                android:orientation="horizontal"
                android:layout_height="wrap_content">
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1.0">


                    <TextView
                        android:text="Amount Paid"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/amountinfo"
                        android:layout_alignParentRight="true"
                        android:layout_alignParentEnd="true"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:textAlignment="center"
                        android:textSize="6pt" />
                </RelativeLayout>

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1.0">
                    <TextView
                        android:text="Cost"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/costinfo"
                        android:layout_alignParentRight="true"
                        android:layout_alignParentEnd="true"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:textAlignment="center"
                        android:textSize="6pt" />

                </RelativeLayout>

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1.0">
                    <TextView
                        android:text="Balance"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/balanceinfo"
                        android:layout_alignParentRight="true"
                        android:layout_alignParentEnd="true"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:textAlignment="center"
                        android:textSize="6pt" />

                </RelativeLayout>

            </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_below="@+id/head"
                    android:layout_height="wrap_content"
                    android:layout_weight="1.0"
                    android:orientation="horizontal" >

                    <RelativeLayout
                        android:id="@+id/costLayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1.0">


                        <TextView
                            android:text="1200 RM"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/amount"
                            android:gravity="center_vertical"
                            android:layout_alignParentTop="true"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentStart="true"
                            android:layout_alignParentRight="true"
                            android:layout_alignParentEnd="true"
                            android:textAlignment="center"
                            android:textStyle="normal|bold"
                            android:textSize="6pt"
                            android:layout_marginTop="1pt" />
                    </RelativeLayout>

                    <RelativeLayout
                        android:id="@+id/amountinfolayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1.0">

                        <TextView
                            android:text="1000 RM"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/cost"
                            android:gravity="center_vertical"
                            android:layout_alignParentTop="true"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentStart="true"
                            android:layout_alignParentRight="true"
                            android:layout_alignParentEnd="true"
                            android:textAlignment="center"
                            android:textStyle="normal|bold"
                            android:textSize="6pt"
                            android:layout_marginTop="1pt" />

                    </RelativeLayout>

                    <RelativeLayout
                        android:id="@+id/balanceinfolayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1.0">
                        <TextView
                            android:text="80.5 RM"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/balance"
                            android:gravity="center_vertical"
                            android:layout_alignParentTop="true"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentStart="true"
                            android:layout_alignParentRight="true"
                            android:layout_alignParentEnd="true"
                            android:textAlignment="center"
                            android:textStyle="normal|bold"
                            android:textSize="6pt"
                            android:layout_marginTop="1pt" />

                    </RelativeLayout>

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

我的适配器代码:

public class CardArrayAdapter  extends ArrayAdapter<Card> {
    private static final String TAG = "CardArrayAdapter";
    private List<Card> cardList = new ArrayList<Card>();
    private Context mContext;

    static class CardViewHolder {
        TextView line1;
        TextView line2;
        ImageView cimageView;
        TextView amount;
        TextView credit;
        TextView date;

        TextView cost;
        TextView balance;
        TextView amountinfo;

        TextView costinfo;
        TextView balanceinfo;

    }

    public CardArrayAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
        this.mContext = context;
    }

    @Override
    public void add(Card object) {
        cardList.add(object);
        super.add(object);
    }

    @Override
    public int getCount() {
        return this.cardList.size();
    }

    @Override
    public Card getItem(int index) {
        return this.cardList.get(index);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        CardViewHolder viewHolder;
        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.list_item_card, parent, false);
            viewHolder = new CardViewHolder();
            viewHolder.line1 = (TextView) row.findViewById(R.id.line1);
            viewHolder.line2 = (TextView) row.findViewById(R.id.line2);

            viewHolder.amount = (TextView) row.findViewById(R.id.amount);
            viewHolder.date = (TextView) row.findViewById(R.id.date);
            viewHolder.credit = (TextView) row.findViewById(R.id.credit);
            viewHolder.cimageView = (ImageView) row.findViewById(R.id.imageId);


            viewHolder.cost = (TextView) row.findViewById(R.id.cost);
            viewHolder.balance = (TextView) row.findViewById(R.id.balance);
            viewHolder.amountinfo = (TextView) row.findViewById(R.id.amountinfo);
            viewHolder.costinfo = (TextView) row.findViewById(R.id.costinfo);
            viewHolder.balanceinfo = (TextView) row.findViewById(R.id.balanceinfo);
            row.setTag(viewHolder);
        } else {
            viewHolder = (CardViewHolder)row.getTag();
        }
        Card card = getItem(position);

        viewHolder.line1.setText(card.getLine1());
        viewHolder.line1.setTextColor(Color.parseColor("#000000"));

        viewHolder.line2.setText(card.getLine2());
        viewHolder.line2.setTextColor(Color.parseColor("#999999"));

        viewHolder.amount.setText(card.getAmount());
        viewHolder.amount.setTextColor(Color.parseColor("#000000"));

        viewHolder.date.setText(card.getDate());
        viewHolder.date.setTextColor(Color.parseColor("#999999"));

        viewHolder.credit.setText(card.getCredit());
        viewHolder.credit.setTextColor(Color.parseColor("#000000"));

        viewHolder.cost.setText(card.getCost());
        viewHolder.cost.setTextColor(Color.parseColor("#000000"));

        viewHolder.balance.setText(card.getBalance());
        viewHolder.balance.setTextColor(Color.parseColor("#000000"));

        viewHolder.amountinfo.setText(card.getAmountinfo());
        viewHolder.amountinfo.setTextColor(Color.parseColor("#000000"));

        viewHolder.costinfo.setText("Cost");
        viewHolder.costinfo.setTextColor(Color.parseColor("#000000"));

        viewHolder.balanceinfo.setText("Balance");
        viewHolder.balanceinfo.setTextColor(Color.parseColor("#000000"));

        Log.e("TRASACTION URL",Constants.BASE_URL_IMAGE+card.getUrl());
        Picasso.with(mContext).load(Constants.BASE_URL_IMAGE+card.getUrl()).into(viewHolder.cimageView);
        return row;
    }

    public Bitmap decodeToBitmap(byte[] decodedByte) {
        return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
    }
}

这里有什么问题!我在这里找不到任何可能的原因!

- UPDATE -

最后我得到了一个正确的..只需在Framelayout中添加一个封闭的cardview解决了这个问题;

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:id="@+id/card_view"
    android:layout_height="wrap_content"
    xmlns:card_view="http://schemas.android.com/tools"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp">

    <!-- my layouts here -->

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

2 个答案:

答案 0 :(得分:4)

在xml中的CardView小部件标记内使用此属性。

card_view:cardUseCompatPadding="true"

恕我直言,您应该使用此属性并删除

android:layout_margin="10dp"

来自CardView标签。

答案 1 :(得分:1)

将您的cardview布局设置为框架布局,它适用于我

相关问题