Tôi muốn đăng ký sự kiện có thể nhấp trên ngón tay cái của thanh tìm kiếm để kích hoạt sự kiện khi người dùng đã nhấn vào nó. Có thể không?Ngón tay cái của Seekbar khi nhấp vào
Trả lời
tôi làm điều đó theo cách này:
pagesSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { //listener
@Override
public void onStopTrackingTouch(final SeekBar seekBar) {
//add your event here
}
@Override
public void onStartTrackingTouch(final SeekBar seekBar) {
}
@Override
public void onProgressChanged(final SeekBar seekBar, final int progress, final boolean fromUser) {
updateControls(progress, false);
}
});
Tôi muốn chỉ có thể nhấp vào trong ngón cái. Điều đó nghe được kích hoạt cách nhấp vào trong tất cả các phần của thanh tìm kiếm – biquillo
tôi đã có thể đạt được điều này theo cách sau:
seekBar.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_MOVE)
{
changedPosition = true;
seekBar.setProgress(seekBar.getProgress());
return false;
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
if(!changedPosition)
{
//do action here
}
}
}
hy vọng điều này giúp
Điều này sẽ lắng nghe các sự kiện liên lạc trên toàn bộ thanh tìm kiếm thay vì chỉ là ngón tay cái. – Prateek
Prateek là đúng, điều này sẽ cháy khi bạn di chuyển trên các phần khác của thanh tìm kiếm là tốt. –
@ BjörnKechel trong khi thực sự điều này nghe để chạm vào các sự kiện trên tất cả thanh tìm kiếm nhưng nếu bạn chạm vào bất kỳ nơi nào khác ngoài ngón tay cái thì ACTION_MOVE sẽ được kích hoạt và trong ACTION_UP sẽ không có gì xảy ra nhờ câu lệnh if. – zwebie
Kết hợp zwebie và Nermeens câu trả lời cho phù hợp giải pháp:
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
private int mProgressAtStartTracking;
private final int SENSITIVITY;
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
// handle progress change
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mProgressAtStartTracking = seekBar.getProgress();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if(Math.abs(mProgressAtStartTracking - seekBar.getProgress()) <= SENSITIVITY){
// react to thumb click
}
}
});
Vì vậy, điều này thực sự chỉ bắn trên ngón tay cái bấm, không di chuyển ngón tay cái và không bấm vào các phần khác của thanh tìm kiếm.
Bạn có thể điều chỉnh độ nhạy, vì đôi khi một lần nhấp đã di chuyển ngón tay cái một chút và cho phép ít thay đổi trong khi vẫn nhấp vào ít gây phiền toái. Một giá trị tốt ở đây phụ thuộc vào kích thước của thanh tìm kiếm và giá trị tối đa mà nó có thể có. Đối với tôi 3 đã làm việc tốt trên thanh tìm kiếm toàn chiều rộng với 50 max trên bố cục dọc.
@ bất kỳ ai bị bỏ phiếu: Vui lòng cho tôi biết bạn nghĩ gì sai với câu trả lời của tôi. Nó hoạt động tốt hơn hai câu trả lời còn lại. –
Cảm ơn, làm việc tốt cho tôi mặc dù không biết tại sao một số xuống bình chọn – Vicky
Tôi đã sử dụng câu trả lời của Bijom làm nguồn cảm hứng. Điều này sẽ kích hoạt khi ngón tay cái di chuyển như vậy nếu người dùng không nhấp vào ngón tay cái nó sẽ không di chuyển. Hi vọng điêu nay co ich. :)
Nếu bạn có bất kỳ câu hỏi nào về cách hoạt động, vui lòng nhận xét.
mSeekBarSpeed.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progress = mSeekBarSpeed.getProgress();
boolean started = false; //use this variable to see whether the user clicked the right place
@Override
public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) {
if(!started){ //check to see if user clicks the right place
//if the user clicks within a specific threshold
float threshold = (float)seekBar.getMax()/seekBar.getWidth() * seekBar.getThumb().getIntrinsicWidth()/2;
if(Math.abs(progressValue - progress) < threshold){
if(fromUser){ //checks if user actually clicked it
started = true;
}
}else{
seekBar.setProgress(progress); //set to original progress
onStopTrackingTouch(seekBar); //not really necessary, keep or delete based on your needs
return; //get out of method
}
}
if(started) {
progress = progressValue; //update progress variable
System.out.println("onProgressChanged:" + progress + "/" + seekBar.getMax());
//DO WHAT YOU NEED TO DO WHEN PROGRESS IS CHANGING
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
System.out.println("onStartTracking:" + progress + "/" + seekBar.getMax());
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
System.out.println("onStopTracking:" + progress + "/" + seekBar.getMax());
//DO WHATEVER YOU NEED TO DO WHEN PROGRESS IS DONE CHANGING
started = false; //remember to set variable to false
}
});
- 1. Android SeekBar Tùy chỉnh ngón tay cái
- 2. kích thước thay đổi của ngón tay cái seekbar
- 3. Android Seekbar - chỉ cho phép thay đổi bằng ngón tay cái?
- 4. Quy tắc không gian tên của ngón tay cái
- 5. Làm cách nào để thay đổi màu của ngón tay cái trong thanh tìm kiếm?
- 6. nhanh ngón tay cái tùy chỉnh cuộn
- 7. Android vẽ ngón tay cái tìm kiếm của riêng mình trong XML
- 8. Tùy chỉnh tìm kiếm - cách định vị đúng hình ảnh "ngón tay cái" tùy chỉnh?
- 9. Kích thước phần cứng - Quy tắc ngón tay cái
- 10. Flex 4 Slider với hai ngón tay cái
- 11. Quy tắc ngón tay cái khi nào cần gọi ToList khi trả về kết quả LINQ
- 12. Đầu vào LIBGDX - Số ngón tay chạm vào màn hình
- 13. Cách hiển thị ngón tay cái tùy chỉnh khi sử dụng fastScrollEnabled
- 14. Trình đọc vân tay hoặc đầu đọc ngón tay
- 15. Quy tắc ngón tay cái để viết hoa các chữ cái bằng ngôn ngữ lập trình
- 16. Phát hiện kích thước của ngón tay người dùng khi chạm vào
- 17. Phát hiện swipe hai ngón tay của Safari
- 18. Quy tắc chung của ngón tay cái khi viết các ứng dụng đa nền tảng trong C# là gì?
- 19. iPhone: phát hiện hai ngón tay chạm vào
- 20. Ngón tay cái trên các điểm góc đường không di dời các điểm
- 21. Cách vẽ hoa văn trên canvas khi kéo ngón tay
- 22. facebook rss - làm thế nào để tăng kích thước hình ảnh ngón tay cái?
- 23. Trạng thái đánh dấu UISlider với chiều rộng ngón tay cái khác so với bình thường
- 24. Cử chỉ chụm ba ngón tay
- 25. Làm thế nào để thay đổi kích thước của hình ảnh ngón tay cái của UISlider lập trình
- 26. Quy tắc ngón tay cái để đặt các lớp thể hiện mặt trước GAE
- 27. Chế độ ngón tay cái ARM: Kích thước mã không giảm
- 28. phát hiện ngón tay lên/xuống UITapGestureRecognizer
- 29. cây Clojure ngón tay và flexvec
- 30. IOS: vẽ một đường bằng ngón tay của bạn
Bạn đã giải quyết vấn đề này chưa? – David