2011-01-28 14 views
12

よろしくお願いします。私は、拡張ギャラリークラスのアイテムを移動して画像の順序を変更したいと考えています。私は今それをやっている方法:ViewのonDraw()がレイアウトの後ろに描画されます

  • を長押しで、現在選択されている項目を削除し、
  • 私は項目を追加リリースにonTouchEvent()
  • を使用して、それを動き回ることができるように同じ画像を描画するために使用onDraw()再度

これはうまくいきますが、onDraw()メソッドを使用するとギャラリーアイテムの背後に画像が描画されるという問題があります。描画されるものの優先順位を変更する方法はありますか?

+0

から取ら

例あなたは、実際に画像を描画した後super.onDraw()を呼び出していますか? – pankajagarwal

+0

ギャラリーの画像はギャラリーで描かれているので、実際にはそれをコントロールできません。私は、拡張されたギャラリークラス – Nick

答えて

33

まあ、私は全く異なる方向=/

に入った後、ここで同じ問題を抱えている人々のための解決策だ、これを見つけた:コンストラクタで

(またはどこか他のコンポーネントを初期化するには)setWillNotDraw(false)を設定しましたオーバーライドdispatchDraw()dispatchDraw()ViewGroupの子供を描画します。そのため、他のビューの背後または上に描画するかどうかを決めることができます。 Custom drawing on top of Gallery view (and it's child views)

@Override 
protected void dispatchDraw(Canvas canvas) { 
    super.dispatchDraw(canvas); 

    // do your drawing stuff here 
    canvas.drawPath(mPath,mPaint); 
} 
+2

+1の中からこれらの画像を引き出したいので、この情報を検索することで見つけるのは難しいです。このアプローチを使用して、GridViewの上にスクリーンヘルプを描画できました。軽度の誤字:setWillNotDraw(false)を呼び出す必要があります。 willNotDraw()は同じパラメータのゲッターです。 N.B .: setWillNotDraw(false)は、ビューグループが子ビューを完全に利用して描画を行うことを前提とした最適化を無効にします。 – Carl

+0

もっとコードサンプルを共有してください。そのコードを見れば分かります。 +1両方 –

+0

ニックあなたはまだこれを覚えていますか?ギャラリーの画像またはカスタムビューでdispatchDraw()をオーバーライドしますか?それとも、すべてを1つの視点で行っていますか?何か助けを得た – quinestor