2017-09-10 7 views
0

私はZoomLayoutをhttps://gist.github.com/anorth/9845602に設定し、Framelayoutを追加し、FramelayoutにいくつかのImageViewを追加しました。onClicklistenerはscaleGestureDetectorをカバーします

これらのImageViewsにはonClickListenerがあるため、onClickListenerをアクティブにして色を変更します。

問題: 指でつまんでズームインしたいときは、指がImageViewsにない場合にのみ検出します。 指がそれらの上にある場合、私が知るように、ImageViewsのonClickListenerはscaleGestureDetectorをカバーします。 ズームするために指を動かすと、onClickListenerはトリガーしません。

この問題を解決する方法はありますか?

ImageViewsのサイズを小さくしてよりうまくいったが、クリックするのがより難しくなったので、私にとってはオプションではない。

編集:setclickable(false)は、入力をブロックするズームレイアウト上に何もないように機能します。 imageview onclicklistenerの有効/無効を切り替える方法と、ズームを有効にする方法の違いを教えてください。あなたはあなたを助けるかもしれないような何かをあなたの活動やその断片&に彼らのために聞くことができ

マルク・

答えて

0

私はすぐに私はそれがonScaleBeginのようなコールバックを持っていることを見ることができるFrameLayout &に見えた、onScaleEndなど、

public void onScaleBegin() { 
    imageView.setClickable(false); 
    imageView.setFocusable(false); 
    imageView.setFocusableInTouchMode(false); 
} 

public void onScaleEnd() { 
    imageView.setClickable(true); 
    imageView.setFocusable(true); 
    imageView.setFocusableInTouchMode(true); 
} 
+0

問題は、onClickListenerを持つImageViewがあるため、イベント開始スケーリングではありません。 トリガされたイベントはImageViewのonclickなので、スケーリングを開始するイベントはありません。 私が知ったのは、setclickable(false)でImageViewsを非アクティブ化できることです。しかし、私はそれらをアクティブにすることができないので、ImageViewをクリックしてスケーリングを開始する必要があります。 – Marc

+0

FrameLayout上に画像を配置する場所や大きさはわかりませんが、実際にはユーザーがインタラクションする必要があるUIをカバーしているような場合は、デザイン上問題があります。今のユーザーはFramelayoutインタラクションモードに入っているので、 "X"ボタンなどで通常モードに戻ることができます。 –

+0

Framelayoutには中小サイズの画像がたくさんあります。 ユーザーは画像をクリックして色付けする必要があります。 マップが大きいほど(画像を大きくするほど画像が小さくなります)、ズームが便利です。ズームインしてクリックすることができます(より簡単に)。 問題:画面全体に画像があり、ズームインしないで画像に指を置いてズームインすることがあります。 画像の間に配置するときのみ、ズームします。 – Marc

関連する問題