1
我正在实施自定义视图。当用户触碰FrameLayout中托管的ImageView中的一个点时,我想将一堆圆圈添加到FrameLayout。现在,我正在用半径为20的onDraw方法绘制内容。但是,当我将它放入FrameLayout中时,它只显示一个小角落。我如何告诉自定义视图它应该有20的宽度/高度?这是我应该在我的自定义视图中执行的事情,还是在我实例化自定义视图后调用addView的活动中?如何使用onDraw指定自定义视图的高度/宽度?
public class MyCircle extends View {
Paint paint;
private static final int RADIUS = 20;
public MyCircle(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.WHITE);
setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
// LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(RADIUS * 2 , RADIUS * 2);
// setLayoutParams(layoutParams);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawCircle(0, 0, RADIUS, paint);
}
}
活性代码基本上是这样(从与X中的onTouch处理程序内调用/ Y坐标):
MyCircle circle;
circle = new MyCircle(this);
circle.setX(x);
circle.setY(y);
FrameLayout root = (FrameLayout)findViewById(R.id.image_review_frame);
root.addView(circle);
您不知道。请阅读文档并在developer.android.com上按照创建自定义视图的教程进行操作。你想要onMeasure()和其他几种方法。 – Simon