2011-07-13 43 views
5

Tôi có hoạt động với nhiều hộp kiểm và hộp kiểm EditText gần chúng. Theo mặc định, hầu hết EditTexts đều bị tắt.Lấy nét một cách ngẫu nhiên khi di chuyển

Khi tôi mở hoạt động, một số điều khiển EditText ngẫu nhiên được lấy nét (khung xung quanh) và nếu bạn nhấn vào nó, bàn phím ảo sẽ xuất hiện mặc dù EditText bị tắt và không xuất hiện văn bản khi bạn nhấn vào khóa màn hình.

Ngoài ra, toàn bộ bố cục của tôi được gói trong một ScrollView. Khi bạn cuộn, một số ngẫu nhiên EditText s lấy nét. Nó có thể là thấp nhất có thể nhìn thấy, hoặc cao nhất có thể nhìn thấy, hoặc đôi khi một ở giữa, đôi khi một bên ngoài khu vực có thể nhìn thấy.

Do yếu tố ngẫu nhiên của bố cục được lấy nét, Hoạt động sẽ được cuộn xuống một cách ngẫu nhiên khi bạn mở nó, điều này khá khó chịu.

Tôi đoán đó là lỗi của Android, nhưng có cách giải quyết khác không?

Stop EditText from gaining focus at Activity startup xử lý tình huống chỉ với 1 EditText mà bạn có thể yêu cầu mất tập trung để phần tử giả có thể lấy được. Trong trường hợp của tôi, phần tử giả không được lấy nét, cả trong onResume hoặc onCreate, với cả hai android:focusable="true" android:focusableInTouchMode="true"

Tôi có nên kiểm tra tất cả các điều khiển EditText (có 12 trong số đó) và yêu cầu chúng mất tiêu điểm không? Điều gì với di chuyển, bởi vì nó dường như tập trung nhảy ngẫu nhiên.

+0

Chỉ cần thử gọi clearFocus() và setSelected (false) trên mọi phần tử EditText trong bố cục. Điều này không giúp được gì. Vẫn còn một số ngẫu nhiên được tập trung. – iseeall

+0

Sau khi một số thử nghiệm trên này phát hiện ra rằng nó không phải luôn luôn là một trong những ngẫu nhiên nhận được tập trung, nhưng các EditText yếu tố có cùng vị trí y như là điểm liên lạc. Bạn không cần phải chạm chính xác chính phần tử đó, nhưng ở bên phải hoặc bên trái của phần tử và sau đó bắt đầu cuộn. Sau một thời gian, EditText có cơ hội cao để tập trung, ngay cả khi nó bị tắt (không thể chỉnh sửa) – iseeall

Trả lời

3

Nó không cuộn mà tập trung ngẫu nhiên EditText. Đó là khi scrollview xử lý một sự kiện fling. Nếu bạn ghi đè lên phương thức fling thì sẽ không có bất kỳ thay đổi tiêu điểm ngẫu nhiên nào.

Sau đó, nếu bạn muốn có chức năng thoát, bạn sẽ cần phải viết phương thức thoát của riêng mình. Có mã ở đây bạn có thể sao chép từ:

Smooth scrolling in Android

+0

Cảm ơn rất nhiều. Sẽ thử nó. – iseeall

+0

tôi đang đối mặt với cùng một vấn đề tập trung nhảy. nhưng tôi không thể ghi đè lên việc di chuyển mượt mà trong mã Android. Bạn có thể vui lòng cho tôi thêm một số chi tiết để giải quyết vấn đề này không. Cảm ơn trước. – sathish

4

Bởi vì việc thực hiện các phương pháp fling trong ScrollView - nó là đủ để ghi đè lên findFocus(), do đó nó sẽ trở lại this để ngăn chặn sự tập trung từ nhảy xung quanh khi cuộn.

@Override 
public View findFocus() { 
    return this; 
} 
+0

Làm thế nào để bạn làm điều này mà không cần phân lớp ScrollView? – SoloPilot

+0

không thể. bạn sẽ phải phân lớp 'ScrollView' – Skip

+0

Subclassing ScrollView không làm việc cho vấn đề của tôi. Bạn có thể giúp? Tôi vừa đăng câu hỏi của mình tại http://stackoverflow.com/questions/21240063/android-edittext-focus-jumps-to-another-inside-srollview – SoloPilot

Các vấn đề liên quan