1

我用新的 CardView 和 RecyclerView 创建了一个卡片列表,看起来像这样:

我的卡

正如马里奥蒂在这篇文章中所解释的那样,我试图用圆角修改卡片。

问题:问题是,正如您从屏幕截图中看到的那样,我只能在图像保持正方形时设置卡片的角。

在示例中,Drawable扩展的自定义类Drawable使用 绘制圆角矩形Canvas.drawRoundRect(),并使用 aPaint和 aBitmapShader用纹理而不是简单的颜色填充圆角矩形,如here所述。

在我的适配器中,我有:

@Override
public ContactViewHolder onCreateViewHolder(final ViewGroup viewGroup, int i) {
    final View itemView = LayoutInflater
                    .from(viewGroup.getContext())
                    .inflate(R.layout.item_card_view, viewGroup, false);
    CardView cardView = (CardView) itemView.findViewById(R.id.card_view);

    ImageView imageView = (ImageView) itemView.findViewById(R.id.hImage);

    Bitmap mBitmap = BitmapFactory.decodeResource(itemView.getResources(), R.drawable.background);
    //Default
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        //Default
        imageView.setBackgroundResource(R.drawable.background);
    } else {
        //RoundCorners
        madapps.hellogridview.RoundCornersDrawable round = new madapps.hellogridview.RoundCornersDrawable(
                mBitmap,            
             itemView.getResources().getDimension(R.dimen.cardview_default_radius)
                , 5); //or your custom radius

        cardView.setPreventCornerOverlap(false); //it is very important

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
            imageView.setBackground(round);
        else
            imageView.setBackgroundDrawable(round);
    }

    //Set onClick listener
    cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int tag = (Integer) v.findViewById(R.id.hTitle).getTag();
            Toast.makeText(viewGroup.getContext(), "Clickable card no: "+tag, Toast.LENGTH_LONG).show();
        }
    });
    return new ContactViewHolder(itemView);
}

我已经覆盖了R.dimen.cardview_default_radiusto的值8dp,但没有结果!有任何想法吗?

4

2 回答 2

2

我用这个解决了它:

https://github.com/pungrue26/SelectableRoundedImageView

并将半径10dp(与卡片相同)应用于图像的顶角:

<com.joooonho.SelectableRoundedImageView  android:id="@+id/headerImage"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="wrap_content"     
    android:layout_width="wrap_content"
    android:src="@drawable/cardbackground3"
    android:scaleType="centerCrop"
    android:adjustViewBounds="true"
    app:sriv_left_top_corner_radius="10dip"
    app:sriv_right_top_corner_radius="10dip"
    app:sriv_left_bottom_corner_radius="0dip"
    app:sriv_right_bottom_corner_radius="0dip"
    app:sriv_border_color="#333333"/>
于 2015-05-19T18:37:31.897 回答
2

谢谢,这正是我所需要的。但是你知道有一个问题知道。CardView 和 Image 的边界之间没有像填充这样的空间。但在我的情况下没有填充物。在我看来,这个库是圆角的,但不会改变图像的位置。你有同样的想法吗?顺便说一句,我的布局和你的一样。你对此有什么想法吗?

在此处输入图像描述

于 2015-05-19T20:39:27.370 回答