5

이 질문과 관련하여 여기에 몇 가지 질문이 있습니다. 그러나 그들 중 누구도 내가 찾고있는 대답을 가지고 있지 않습니다.소프트 키 보드가 표시 될 때 뒤로 버튼을 누를 때 EditText를 누르십시오

저는 ScrollView 안에 7 ET가 있습니다. 나는 응용 프로그램을 시작할 때 어떤 ET가 내 전체 레이아웃에 다음 두 줄을 추가했기 때문에 포커스가 없습니다 : 내가 ET 클릭하면

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

가 softkeyboard가 표시됩니다, 내가 원하는, 그럼 내가 값을 설정 (20 번). 나는 '2'다음에 '0'을 누른 다음 뒤로 버튼을 누릅니다. 이 시점에서 키보드는 사라지지만 초점은 유지됩니다. 뒤로 버튼을 눌러 키보드를 숨길 때도 초점을 정리하고 싶습니다.

포커스가 해제되면 ET의 레이아웃이 원하는대로 설정되기 때문에.

그들은 모두가 일부 코드에 대한 있습니다

// 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); 
      } 
     } 
    }); 

내가 5.00 같은 숫자로 ET의 입력을 변경하는 대신 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

당신이 이것에 대한 해결책을 발견 한이 문제를 해결하려면 다음 URL을 따라 따르십시오? – PrisonMike

+0

첨부 된 링크에서 Kacy 대답을 강력하게 추천합니다 : http://stackoverflow.com/questions/13975058/make-edittext-lose-focus-on-back-press –

답변

0

하는 포커스 리스너를 사용 이를 위해 레이아웃 파일의 상위 레이아웃에서 onTouchListener를 가져와야합니다. TouchListener에서 EditText 외부를 클릭하면 키보드를 숨기도록 코드를 작성해야합니다. 이 문제를 해결하려면 다음 XML 레이아웃 및 Java 클래스를 따르십시오.

이 (가) http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html

+0

질문이 있으시면 내 블로그 나 의견에 게시 해주십시오. 그것 –

+0

고마워,하지만 불행히도 내가 무엇을 찾고 있었는지 알아. – patrick

+0

당신은 내가 뒤쪽 키를 누른 다음 키보드가 보이지 않을 것이고 텍스트 편집에 초점을 맞추고 싶습니다. 권리? –

관련 문제