1

私はレイアウトを行う独自の View サブクラスを持っています (私はそれを ViewGallery と呼びます)。私の問題は、手動で描画したビューが画面に表示されないことです。これが onDraw メソッドです。

@Override
protected void onDraw(Canvas canvas) {
    for(Child child : visibleChilds){
        canvas.save();
        canvas.clipRect(child.bounds);
        child.view.draw(canvas);
        canvas.restore();
    }
}

private List<Child> visibleChilds = new ArrayList<ViewGallery.Child>();

private static class Child {
    private View view;
    private Rect bounds;

    public Child(View view, Rect rect) {
        this.view = view;
        bounds = rect;
    }
}

私の知る限り、指定されたクリップされたキャンバスに内側のビューを描画する必要があります。

なぜビューがまだ空なのですか?

また、ViewGroup を拡張しようとしたので、自分自身をアダプターのパラメーターとして渡しましたが、デフォルトの ViewGroup.LayoutParams には、ビューの適切な変換を処理するために必要な左 (または x) プロパティがありません。しかし、それをサブクラス化すると、onDraw が呼び出されず、子がまだ表示されません。

4

1 に答える 1