Tôi có hai hình ảnh có khu vực trong suốt chồng lên nhau. Khi tôi đang nhấp vào một hình ảnh, trình kích hoạt onclicklistener của một hình ảnh khác sẽ được gọi. Có cách nào để giảm diện tích có thể nhấp của ImageView không.Android: Cách giảm diện tích có thể nhấp của Chế độ xem?
Trả lời
Bạn tạo một TouchDelegate
:
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));
}
});
refered từ here
Bạn có thể giải quyết nó chỉ sử dụng xml. Chỉ cần đặt hình ảnh của bạn vào một khung và đặt một chế độ xem trong suốt khác mà bạn bấm để nhấp vào các sự kiện ở trên cùng. Điều chỉnh kích thước và vị trí với thông số bố cục:
<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>
Vì vùng mong muốn không thể nhấp chuột là vùng "trong suốt" (tôi cho rằng nó không nằm trong vùng có thể vẽ), bạn thậm chí có thể bỏ chế độ xem đã thêm và chỉ bằng cách thêm FrameLayout mà bạn đã giải quyết nó - sử dụng các thuộc tính layout gốc trên FrameLayout thay vì ImageView và làm cho ImageView chỉ lớn như bạn muốn nó có thể nhấp. –
Không sử dụng OnClickListener, nhưng tự mình xử lý khu vực nhấp chuột.
Ví dụ bằng cách chia tỷ lệ hình chữ nhật cảm ứng và dịch nó vào giữa chế độ xem. Bạn cũng có thể sử dụng bán kính hoặc bù thủ công.
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. Android - Nhận diện tích hiển thị của chế độ xem?
- 2. Android: Không thể lấy tiêu đề/chân trang của Chế độ xem ListView có thể nhấp
- 3. Android - Cách tạo chế độ xem danh sách có thể nhấp?
- 4. ViewModel của tôi có thể xem ObservableCollection của Chế độ xem hoặc Chế độ xem không?
- 5. Android: Có thể tạo bản sao Chế độ xem không?
- 6. Chế độ xem nhấp chuột theo lập trình trong android
- 7. Nút có thể nhấp (hoặc bất kỳ Chế độ xem nào) bên trong EditText trong android
- 8. Có thể đặt một chế độ xem trên một chế độ xem khác trong Android không?
- 9. Chế độ xem Android biến mất bằng cách nhấp vào bên ngoài của nó
- 10. Ẩn chế độ xem trong trình tạo giao diện khi có nhiều chế độ xem
- 11. Có thể che giấu Chế độ xem trong Android không?
- 12. Android: tạo chế độ xem tùy chỉnh có thể cuộn
- 13. Android có loại chế độ xem
- 14. Android - PopupWindow phía trên một chế độ xem cụ thể
- 15. Android - Cách vẽ trên chế độ xem
- 16. Android Cách tạo Chế độ xem có lập trình
- 17. Android: dài nhấp vào các chế độ xem con của ExpandableListView?
- 18. Android: cách có hình nền ở giữa chế độ xem
- 19. Cách đặt mục có thể nhấp trong chế độ xem danh sách?
- 20. Chế độ xem văn bản không thể cuộn trong android
- 21. Chế độ xem hiển thị Android GONE
- 22. Bộ điều khiển xem đẩy vào chế độ xem giao diện chế độ xem
- 23. Cách tải chế độ xem cho một mục trong chế độ xem danh sách trong Android?
- 24. Làm cách nào để tăng diện tích có thể nhấp của nút thẻ <a>?
- 25. android - cách xóa chế độ xem bố cục tuyến tính
- 26. Cách thêm GLSurfaceView giữa Chế độ xem Android?
- 27. Có chế độ xem web tốt hơn cho Android
- 28. Cách xem chế độ xem phụ huynh từ chế độ xem từng phần
- 29. getOnClickListener() trong chế độ xem Android
- 30. Không thể kích hoạt chế độ Xem trước Android Studio
Với phương pháp của bạn, tôi có thể tăng diện tích có thể chạm, nhưng tôi không thể giảm diện tích. – Amit