2010-08-02 25 views
10

Tôi cần biết khi nào người dùng chạm/nhấn/nhấp vào văn bản trong hoạt động của tôi.Phát hiện chạm trên EditText, nhưng không làm gián đoạn cảm ứng?

Làm cách nào tôi có thể thực hiện việc này mà không làm gián đoạn sự kiện, vì vậy bàn phím vẫn hiển thị chính xác?

(Và tôi cần phải biết về nó trước khi hệ điều hành sẽ hiển thị bàn phím ... nếu có thể)

Trả lời

28
txtEdit.setOnTouchListener(new View.OnTouchListener(){ 
    public boolean onTouch(View view, MotionEvent motionEvent) {              
     // your code here.... 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);     
     return false; 
    } 
}); 
+3

Cảm ơn, mặc dù tôi không cần dòng ở trên 'return false;' khi bàn phím xuất hiện tự động. –

0

Bạn sẽ có thể làm điều này bằng cách gắn một OnClickListener để EditText của bạn. Nếu bạn lo ngại về việc chặn chuỗi giao diện người dùng trong OnClickListener, bạn có thể tạo ra một Thread mới và thực hiện công việc của mình ở đó - mặc dù, nếu bạn làm như vậy, sẽ không có gì đảm bảo công việc sẽ được thực hiện trước khi bàn phím hiển thị.

+0

Nếu tôi đính kèm một mới trênFocusChangeListener, nó ngắt bàn phím, và nó phải được nhấn hai lần để hiển thị nó. Khi tôi ghi đè, có cách nào để gọi siêu hay cái gì đó không? Có lẽ tôi đang tiếp cận ... –

+0

... onClickListener không thực hiện mẹo btw :) –

+1

OK. Hãy thử xem xét điều này ... http://stackoverflow.com/questions/2403632/android-show-soft-keyboard-automatically-when-focus-is-on-an-edittext – iandisme

1
View.OnTouchListener onTouchListener = new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if(event.getAction() == MotionEvent.ACTION_UP){ 

... 


} 
+0

Cảm ơn bạn đã đăng câu trả lời cho câu hỏi này! Câu trả lời chỉ có mã được khuyến khích trên Stack Overflow, bởi vì nó có thể khó khăn cho các poster ban đầu (hoặc độc giả trong tương lai) để hiểu được logic đằng sau chúng. Vui lòng chỉnh sửa câu hỏi của bạn và đưa ra giải thích về mã của bạn để người khác có thể hưởng lợi từ câu trả lời của bạn. Cảm ơn! –

0

Ít verbosity

Cùng tiếp cận Mathias Conradt's, nhưng sử dụng Kotlin:

txtEdit.setOnTouchListener({ view, motionEvent -> 
    // your code here.... 
    false 
}) 

này dòng getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); là không cần thiết kể từ khi bàn phím được hiển thị khi bạn chạm vào xem EditText.

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