我用新的 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_radius
to的值8dp
,但没有结果!有任何想法吗?