2013-02-26 38 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; 
       }