私は、透明領域が互いに重なる2つの画像を持っています。 イメージをクリックすると、別のイメージのonclicklistenerが呼び出されます。とにかくImageViewのクリック可能な領域を減らすことはありますか?Android:ビューのクリック可能な領域を減らすには?
6
A
答えて
2
あなたはTouchDelegate
を作成: here
1
から参照さ
final View parent = (View) findViewById(R.id.touch_delegate_root);
parent.post(new Runnable() {
// Post in the parent's message queue to make sure the parent
// lays out its children before we call getHitRect()
public void run() {
final Rect rect = new Rect();
Button delegate = YourActivityClass.this.mButton;
delegate.getHitRect(rect);
rect.top -= 20;
rect.bottom += 12; // etc
parent.setTouchDelegate(new TouchDelegate(rect , delegate));
}
});
あなたが唯一のXMLを使用してそれを解決することができます。あなたのイメージをフレームに置き、別の透明なビューを配置して、その上にあるイベントをクリックするだけです。レイアウトパラメータでサイズや位置を調整します。
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="your_view"
android:clickable="false"
<!-- your other attributes -->
<!-- ... -->
/>
<ImageView android:id="the_clickable_view"
android:src="@null"
<!-- set desired size of clickable area -->
<!-- align it inside a frame using:
android:gravity and android:margins -->
/>
</FrameLayout>
+0
クリック可能な領域が透明なので、追加されたビューを削除することもできます。また、FrameLayoutを追加するだけで、元のレイアウト属性を使用することができます。 ImageViewの代わりにFrameLayoutを使用し、ImageViewをクリック可能な大きさにします。 –
0
はOnClickListenerを使用していますが、OnTouchListenerと自分でクリック領域を処理しないでください。
たとえば、タッチ矩形を拡大縮小して、それをビューの中央に移動することによって行います。 半径または手動オフセットを使用することもできます。
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final Rect rect = new Rect();
v.getHitRect(rect);
float scale = 0.5f;
final float x = event.getX();
final float y = event.getY();
final float minX = v.getWidth() * 0.5f * (1.0f - scale);
final float maxX = v.getWidth() * 0.5f * (1.0f + scale);
final float minY = v.getHeight() * 0.5f * (1.0f - scale);
final float maxY = v.getHeight() * 0.5f * (1.0f + scale);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (x > minX && x < maxX && y > minY && y < maxY) {
Log.d("TOUCH", String.valueOf(x) + " " + String.valueOf(y));
}
break;
}
return true;
}
});
関連する問題
- 1. 画像のクリック可能な領域
- 2. Java。スイング。 JComponentのクリック可能な領域
- 3. 画像のクリック可能な領域
- 4. 画像内のクリック可能な領域
- 5. クリック可能な領域がある3D回転可能キューブ
- 6. クリック可能な領域はイメージビュー内にありますか?
- 7. Android用Googleマップv2のマーカーのクリック可能な領域をカスタマイズする
- 8. DIVをクリックできない領域でクリック可能にする方法は?
- 9. オーバーフローするクリック可能な領域を削除する
- 10. モバイルデバイスのクリック可能な領域のサイズはどれくらいですか?
- 11. Firefoxの小さなクリック可能な領域
- 12. ウェブページの大きなクリック可能な領域
- 13. クリック可能な領域を特定する
- 14. jQuery Mobileでリスト項目からクリック可能な領域を有効にする
- 15. WPF - WP7の画像マップ/カスタムシェイプのクリック可能な領域
- 16. ボタンやクリック可能な領域を生成
- 17. iPhone、マップ、クリック可能な非長方形の領域
- 18. ListViewでクリック可能な領域の幅onListItemClick
- 19. CSS背景画像(スプライト)をクリック可能な領域にするには?
- 20. OverlayItem(Android用)のクリック可能領域のサイズを設定する方法
- 21. ion-nav-barのボタンのクリック可能領域を増やす
- 22. DIVの右側の領域がクリック可能なのはなぜですか?
- 23. jQueryのハイライトクリック可能な領域
- 24. カスタムコントロールの編集可能な領域
- 25. クリック可能な領域の上にある要素を処理する方法
- 26. iOSタップ可能領域で
- 27. Androidのチェックボックスのクリック領域の問題
- 28. キャンバスで透明なクリック可能な領域を削除する方法
- 29. クリック可能な領域が2つあるボタンを作成できますか?
- 30. Googleマップでノードアイコンとクリック可能な領域を変更する図面ライブラリ(ポリゴン)
あなたの方法では、タッチ可能な領域を増やすことができましたが、領域を減らすことができませんでした。 – Amit