2011-12-22 11 views
2

ギャラリーを拡張するカスタムアンドロイドコントロールを構築しています。私はので、私は、私はこれを与えたら、私はセンター1である3個のギャラリー内のアイコン、1、3が最初に注目して、2を持っているgetChildDrawingOrderと同期していないタッチイベントのAndroidギャラリー制御の順序

setSpacing(-60); 

を発行しています重ねされているビューの効果を必要とします。同じの規則がgetChildDrawingOrderで定義されているとも

setChildrenDrawingOrderEnabled(true); 

ことによってそれを有効にしている今の問題は、ビュー、私は順序でルールを定義した方法で描かなっているです。しかし、ギャラリーコントロール内のイベントは、元のビューオーダー(1,2,3)になります。説明を良くするために、

1が描画され、3が描画され、最後に2が描画され、互いに重なります。 ビューには1の50%、2の100%、3番目のビューの50%があります。

しかし、私はビューをタッチすると、アンドロイドは1の50%、2の50%、3の100%が画面に表示されていることを前提としています。もう少し明確にするために、1ビューの50%後に、クリックすると2がフォーカスされます(これは、私の描画ルールに従って2が1の上にあるためです)。

しかし、ビュー2の50%の後に任意の場所をクリックすると、フォーカス3が表示され、描画3のオーダーは表示されません。2の100%は表示されますが、ビューの50% 1、フォーカスはビュー2です。

イベントの順序を画面上のビューのパターンに従って強制することで、私たちが解決する方法についてあなたの考えを分かち合うのを助けてください。

答えて

0

これらの子ビューのタッチ領域を手動で再計算する必要があります。

getHitRect()をオーバーライドし、範囲が重複するように境界が調整された独自のRectオブジェクトを返すことをお勧めします。

関連する問題