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 に答える