0

を含むカスタムビューがRelativeLayoutありますListView(両方とも親と一致するように設定されています-幅と高さ)。リストの一番上に、View下の図に示すよう なものがあります。マイ カスタム ビュー

ビューの他のすべての部分が透明になるのに対し、描画される唯一の部分は私の四角形View(灰色でマークされている)です。

これを行う方法はありますか?私はすでにそのメソッドを拡張RelativeLayoutしてオーバーライドしようとしましonDraw()たが、特定の領域 (灰色でマーク) だけを描画することはできませんでした。

4

1 に答える 1

0

最終的には、そのメソッドを拡張RelativeLayoutしてオーバーライドすることで実現しました。draw()

@Override
protected void draw(Canvas canvas) {
    canvas.clipRect(magnifiedRegion.getLeft(), magnifiedRegion.getTop(), magnifiedRegion.getRight(), magnifiedRegion.getBottom());
    super.draw(canvas);
}

magnifiedRegion上記の質問で述べたように、私のビューはどこにありますか。

this.setWillNotDraw(false);注:コンストラクターで設定する必要があります。そうdraw()しないと、フレームワークによってメソッドが呼び出されません (ルート ビューは、ViewGroupAndroid フレームワークがデフォルトで行う最適化であるため)。

于 2013-02-06T15:08:10.290 に答える