我创建了一个ShapeDrawable并将其放置在我的布局中动态创建的imageview中。这是我用来将drawable分配给我的ImageView的代码。请注意,我调用了一个设置随机颜色的方法,我还使用用户填充的文本字段设置了高度和宽度,但这与此无关。
ShapeDrawable shape;
public void makeShape(){
shape = new ShapeDrawable(new RectShape());
shape.setIntrinsicHeight(Integer.parseInt(ET_Height.getText().toString()));
shape.setIntrinsicWidth(Integer.parseInt(ET_Width.getText().toString()));
shape.getPaint().setColor(chooseColor());
iView.setImageDrawable(shape);
}
这部分代码运行得非常好,当我稍后尝试使用与之前相同的颜色方法访问Drawable以在用户点击时更改它的颜色。
public void onClick(View v){
iView.getDrawable().getPaint().setColor(chooseColor());
}
显然这段代码不起作用,但它是我能够完成它的最接近的代码。我无法通过“形状”访问drawable,我不明白为什么。
那么在onClick方法中获取访问drawable以改变颜色,alpha,旋转等的最佳方法是什么?
谢谢!
答案 0 :(得分:1)
更改形状参数后再次尝试iView.setImageDrawable(shape)。
答案 1 :(得分:0)
我已经使用Abhinav的解决方案解决了同样的问题,这对我有用 基本上使用相同的参数我用来创建形状然后再次创建相同的形状并设置颜色和边界到现有的形状