0

안녕하세요. 내 레이아웃에 플로팅 텍스트보기 을 사용하고 있습니다. 텍스트 편집을 클릭하고 아무것도 입력하지 않거나 편집 텍스트 내의 모든 것을 삭제 한 다음 해당 뷰 외부를 클릭하면 플로팅 레이블이 여전히 높은 위치에 남아 있습니다. 힌트가 표시되고 텍스트가 삽입되지 않은 이전 위치로 재설정하려고합니다. 그래서 이것을 달성하는 방법? 미리 감사드립니다.

그리고 부동 레이블을 표시하는 데 지원 디자인 라이브러리를 사용하고 있습니다.
텍스트 입력 레이아웃 외부에서 클릭하면 플로팅 레이블 텍스트를 원래 위치로 다시 설정하는 방법 android

플로팅 라벨에 대해서는 this 자습서를 따르고 있습니다.

enter image description here

+0

@ whd.nsr의 대답은 정말 도움이되었습니다. 또한 afterTextChanged() 메서드를 사용하여 포커스를 지우는 방법으로 텍스트 워처를 사용하는 다른 방법을 발견했습니다. 처음에 edittext를 클릭하고 아무 것도 입력하지 않으면 청취자를 트리거 할 수 없었습니다. –

답변

1

당신은 edittexts 그들를 벗어난 클릭 한 후 초점을 잃게하기 위해 사용자의 작업에 일부 코드를 추가 할 수 있습니다.

public static void setupForKeyboardDismiss(View view, final Activity activity) { 

     //Set up touch listener for non-text box views to hide keyboard. 
     if(!(view instanceof EditText)) { 

      view.setOnTouchListener(new View.OnTouchListener() { 

       public boolean onTouch(View v, MotionEvent event) { 
        hideSoftKeyboard(activity); 
        return false; 
       } 

      }); 
     } 

     //If a layout container, iterate over children and seed recursion. 
     if (view instanceof ViewGroup) { 

      for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { 

       View innerView = ((ViewGroup) view).getChildAt(i); 

       setupForKeyboardDismiss(innerView, activity); 
      } 
     } 
    } 
    public static void hideSoftKeyboard(Activity activity) { 
     try { 
      InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); 
      inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 

그런 다음 당신은 실제로 당신이 (당신의 활동의 된 setContentView 후)이 호출하여 모든 활동에 적용 할 수 있습니다, 그 edittexts가 포함 된보기를 통과 setupForKeyboardDismiss 메소드를 호출 할 수 있습니다 :

여기 은 예입니다
setupForKeyboardDismiss((ViewGroup) activity.findViewById(android.R.id.content), activity); 
+0

감사합니다. @ whd.nsr. 정말 도움이되었습니다. editText.clearFocus();를 사용하여 편집 텍스트의 포커스를 지 웠습니다. 메서드를 사용하여 setupForKeyboardDismiss() 메서드를 호출합니다. 도움이 되었다면 기꺼이 –

+0

:) –

0

edittext에 여전히 포커스가 있기 때문입니다. 밖을 클릭하거나 다른보기를 클릭하면 editText.clearFocus()로 전화 할 수 있습니다.