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

然後就可以調用setupForKeyboardDismiss方法傳遞一個包含這些edittexts任何觀點,其實你可以通過調用這個(你的活動的setContentView後),它適用於所有活動:

setupForKeyboardDismiss((ViewGroup) activity.findViewById(android.R.id.content), activity); 
+0

謝謝@ whd.nsr。這真的很有幫助。我使用editText.clearFocus()清除了編輯文本的焦點; setupForKeyboardDismiss()方法中的方法。 –

+0

很高興這有幫助:) –

0

這是因爲您的edittext仍然有重點。您可以撥打editText.clearFocus()當你點擊外面或其他視圖