tôi là tạo ra một widget tùy chỉnh bằng cách mở rộng LinearLayout
:Tuỳ chỉnh Widget sử dụng LinearLayout không nhận OnDraw()
public class MyWidget extends LinearLayout {
private static Paint PAINT = new Paint(Paint.ANTI_ALIAS_FLAG);
static {
PAINT.setColor(Color.RED);
}
public MyWidget(Context context) {
this(context, null);
}
public MyWidget(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, canvas.getWidth()/2, PAINT);
// never gets called :-(
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
// this gets called, but with a canvas sized after the padding.
}
}
tôi có thể thêm trẻ em tốt, nhưng tôi không bao giờ nhận được tùy chỉnh của tôi onDraw()
được gọi. dispatchDraw()
được gọi, nhưng điều đó dường như có một khung hình khác nhau (một trong đó là trong padding. Tôi cần phải vẽ trên toàn bộ khu vực bố trí). Có một số cờ cần được đặt để có được onDraw()
được gọi cho bố cục không?
Không sử dụng chiều rộng và chiều cao của Canvas, chúng không phải là thứ bạn muốn. –