0

我在滚动视图中有一个相对布局,然后我使用以下代码创建了一个新视图:

public class DrawView extends View {
    Paint paint = new Paint();

    public DrawView(Context context) {
        super(context);            
    }

    @Override
    public void onDraw(Canvas canvas) {
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(2);
        paint.setStyle(Paint.Style.STROKE);
        canvas.drawRect(5, 5, 140, 140, paint);

    }
}

然后我尝试使用 layout.addView(DrawView) 将新视图添加到相对布局中,因此它可以与其余内容一起滚动,但不起作用,没有任何显示..

我错过了什么吗?

编辑:

DrawView formas;
GifMovieView gif;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final RelativeLayout layout = new RelativeLayout(this);
    final ScrollView scrollView = new ScrollView(this);
    //gif = new GifMovieView(this, t_img);
    formas = new DrawView(this);

    layout.addView(formas);
    scrollView.addView(layout);


    this.setContentView(scrollView);    
    inicializar();
    load(layout);   
}
4

1 回答 1

2

您可能希望onMeasure()在 DrawView 中覆盖。否则,您的视图将具有 0x0 像素的大小。

你可以从简单的事情开始

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(200, 200);
}

只是为了证明它有效,但您需要根据您的视图内容做一些更有意义的事情。

这篇文章开始,查看有关覆盖onDraw()onMeasure()

于 2012-07-19T22:38:14.907 回答