5

Tôi biết rằng có một số câu hỏi ở đây liên quan đến câu hỏi này. Nhưng không ai trong số họ có câu trả lời mà tôi đang tìm kiếm.Xóa tiêu điểm EditText khi nhấn nút quay lại khi phím chức năng hiển thị

Tôi có 7 ET bên trong một ScrollView. Khi tôi khởi động ứng dụng không ET có tập trung bởi vì tôi đã thêm hai dòng sau để bố trí tổng thể của tôi:

android:focusable="true" 
android:focusableInTouchMode="true" 

Khi tôi bấm vào một ET the softkeyboard được hiển thị, mà tôi muốn, sau đó tôi thiết lập giá trị (Hãy nói 20). Tôi bấm một '2' theo sau là '0' và sau đó nhấn nút quay lại. Tại thời điểm này bàn phím biến mất, nhưng tiêu điểm vẫn nằm. Tôi cũng muốn xóa tiêu điểm khi nhấn nút quay lại để ẩn bàn phím.

Vì khi tiêu điểm bị xóa, bố cục của ET được đặt như tôi muốn.

Tất cả họ đều có về một số mã, đó là:

// Right Cable 
    RightCable = (EditText) findViewById (R.id.RightCable); 
    RightCable.setRawInputType(Configuration.KEYBOARD_12KEY); 
    RightCable.setOnFocusChangeListener(FocusChanged); 
    RightCable.addTextChangedListener(new TextWatcher() { 
     public void afterTextChanged(Editable s) { 
      if(RightCable.isFocused()){ 
       LengthRightCable  = Double.parseDouble(RightCable.getText().toString()); 
       Calculate(); 
      } 
     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      if(s.toString().matches("")) { 
       RightCable.setText("0.00"); 
       Selection.setSelection(RightCable.getText(), 0, 4); 
      } 
     } 
    }); 

tôi sử dụng một người biết lắng nghe tập trung để thay đổi đầu vào của ET đến một số mặt hàng như 5.00 thay vì 0.

OnFocusChangeListener FocusChanged = new OnFocusChangeListener() { 

    public void onFocusChange(View v, boolean hasFocus) { 

     EditText et = (EditText) v; 

     et.setSelection(0, et.getText().length()); 

     if(!hasFocus){ 
      String userInput = et.getText().toString(); 

      int dotPos = -1;  

      for (int i = 0; i < userInput.length(); i++) { 
       char c = userInput.charAt(i); 
       if (c == '.') { 
        dotPos = i; 
       } 
      } 

      if (dotPos == -1){ 
       et.setText(userInput + ".00"); 
      } else if(userInput.length() < 5) { 
       if (userInput.length() - dotPos == 1) { 
        et.setText(userInput + "00"); 
       } else if (userInput.length() - dotPos == 2) { 
        et.setText(userInput + "0"); 
       } 
      } 
     } 
    } 

}; 
+0

bạn đã tìm thấy giải pháp cho điều này chưa? – PrisonMike

+0

Tôi rất khuyên bạn nên trả lời Kacy trong liên kết đính kèm: http://stackoverflow.com/questions/13975058/make-edittext-lose-focus-on-back-press –

Trả lời

0

Đối với điều này, bạn phải dùng onTouchListener trên bố cục cha của Layout File. trên TouchListener bạn phải mã để ẩn Bàn phím khi nhấp vào bên ngoài EditText. Hãy làm theo XML Layout và Java class để giải quyết vấn đề này.

Vui lòng theo dõi url sau đây để giải quyết vấn đề này http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html

+0

Nếu bạn có bất kỳ câu hỏi nào, vui lòng đăng trên blog hoặc nhận xét của tôi nó –

+0

Cảm ơn điều này là tốt đẹp để biết, nhưng tiếc là không phải những gì tôi đang tìm kiếm. – patrick

+0

Bạn muốn rằng nếu tôi nhấn phím trở lại thì bàn phím sẽ ẩn và tập trung vào chỉnh sửa văn bản là bản phát hành. Đúng? –

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