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