1

我正在尝试创建一个彩色圆圈并将其分配给我的 GridView 的 ImageView。

这是我的代码:

ImageView ivColor;

ivColor = new ImageView(MainActivity.this);
ivColor.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));         

ShapeDrawable shape = new ShapeDrawable(new OvalShape());
shape.getPaint().setColor(color[i]);
shape.setIntrinsicWidth(128);
shape.setIntrinsicHeight(128);

ivColor.setImageDrawable(shape);

现在,我手动将 ShapeDrawable 的高度和宽度设置为 128px。有没有办法像我对 ImageView 所做的那样为 ShapeDrawable 分配一个“match_parent”的值?

4

2 回答 2

1

换行试试

ivColor.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

ivColor.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 

编辑:

此外,设置你必须运行setScaleType()ImageView

http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

您应该尝试CENTER_CROPCENTER_FILLFIT_CENTRE根据您的需要。

于 2015-09-01T02:51:31.827 回答
0

将 设置ShapeDrawable为 的背景ImageView。背景总是充满View所以你会得到你想要达到的目标。

ivColor.setBackgroundDrawable(shape);

或者

ivColor.setBackground(shape); // Api level 16+
于 2015-09-01T07:11:33.253 回答