2013-02-26 32 views
0

這裏我有一個片段,它包含一個編輯文本我想隱藏軟鍵盤上的Enter Key Press。setOnKeyListner不能用於EditText

我試過了。但似乎我的onKey方法沒有被調用。我已經通過Log

edTxtUserText.setInputType(InputType.TYPE_TEXT_VARIATION_URI); 

    edTxtUserText.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      if ((event.getAction() == KeyEvent.ACTION_DOWN) 
        && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(edTxtUserText.getWindowToken(), 
         0); 
       return true; 
      } 
      return false; 
     } 
    }); 
  • 什麼是錯在我的代碼檢查。

也在這裏是我的EDITTEXT

<EditText 
       android:id="@+id/edTxtPreview" 
       android:layout_width="125dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_alignTop="@+id/txtText" 
       android:layout_marginRight="24dp" 
       android:background="@drawable/edit_text_style" 
       android:ems="10" 
       android:imeOptions="flagNoExtractUi" 
       android:inputType="textCapWords|text" 
       android:lines="1" 
       android:selectAllOnFocus="true" 
       android:text="Your Text Here" 
       android:textColor="@android:color/white" 
       android:textSize="18sp" > 
      </EditText> 

的XML還我已OnClickListner這個EDITTEXT也。作爲

edTxtUserText.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      edTxtUserText.requestFocus(); 
      edTxtUserText.selectAll(); 
      ((InputMethodManager) getActivity().getSystemService(
        Context.INPUT_METHOD_SERVICE)).toggleSoftInput(
        InputMethodManager.SHOW_FORCED, 
        InputMethodManager.HIDE_IMPLICIT_ONLY); 
     } 
    }); 
+0

在哪個視圖上單擊您想隱藏軟鍵盤?你試圖在Edittext上隱藏,但我認爲它爲android鍵盤提供了一個回車鍵,並隱藏你需要設置EditText屬性android:singleLine =「true」'的鍵盤。 – GrIsHu 2013-02-26 07:32:53

+0

我想隱藏EditKey文本鍵盤的EnterKey按鍵上的softkeyboard – 2013-02-26 07:34:37

+1

您可以在LayoutText文件中爲'EditText'設置'android:singleLine =「true」'並嘗試。按下鍵盤上的回車鍵後,它會自動隱藏軟鍵盤。 – GrIsHu 2013-02-26 07:51:01

回答

0

我只是使用代碼,並能夠成功同時按下done鍵關閉鍵盤,但我只替換下面的代碼行:

嘗試:

InputMethodManager inputManager = (InputMethodManager) 
         getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 

      inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 
          InputMethodManager.HIDE_IMPLICIT_ONLY); 

取而代之:

InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(edTxtUserText.getWindowToken(), 
         0); 

注:在仿真器中測試。

+0

我m使用片段,因此我必須使用getActivity()。getSystemService而不是getSystemService()只有 – 2013-02-26 07:43:56

+0

檢查我更新的答案。 – RobinHood 2013-02-26 07:58:43

+0

我已經試過了。在按下回車鍵的同時將下一個視圖(即我的情況下的選項卡)聚焦在那裏 – 2013-02-26 08:05:09

0

您可以嘗試使用下面的代碼

mEditText.setOnEditorActionListener(new OnEditorActionListener() { 

     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if(event.getAction() == KeyEvent.KEYCODE_ENTER){ 
       //Do Operations here 
      } 
      return false; 
     } 
    }); 
+0

我試過了。它也不叫。 WTH正在進行中。 – 2013-02-26 07:27:26

0

我知道它的工作方式,即使用onKeyListener。使用鍵碼代替getAction() 只需使用

if (keyCode == KeyEvent.ACTION_DOWN) { 
        Log.d("Neha", "in if condition "); 
        InputMethodManager imm = (InputMethodManager) getActivity() 
          .getSystemService(Context.INPUT_METHOD_SERVICE); 
        imm.hideSoftInputFromWindow(edTxtUserText.getWindowToken(), 
          0); 
        return true; 
       }