Android:可以在光标位置隐藏软键盘吗?

时间:2015-05-26 07:02:21

标签: android android-softkeyboard

这是我的问题!

我有一个editText字段,最大字符为1。

<EditText
    android:id="@+id/editText"
    android:maxLength="1"/>

然后我打电话给软键盘并输入一个字符。 输入一个字符后是否可以自动隐藏键盘? 如果有可能,我该怎么做?

3 个答案:

答案 0 :(得分:2)

您可以使用 hideSoftInputFromWindow 隐藏软键盘,它位于 InputMethodManager 内。但请记住,您必须传递窗口的标记,您可以通过编辑中的getWindowToken()来获取该标记。
所以你最终的代码应该是这样的:

EditText myEdit= (EditText) findViewById(R.id.editText);  
InputMethodManager imm = (InputMethodManager)getSystemService(
      Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEdit.getWindowToken(), 0);

答案 1 :(得分:1)

试试这个,

final EditText myEditText = (EditText) findViewById(R.id.editText1);
    final int maxTextLength = 1;//max length of your text

    InputFilter[] filterArray = new InputFilter[1];
    filterArray[0] = new InputFilter.LengthFilter(maxTextLength);
    myEditText.setFilters(filterArray);

    myEditText.addTextChangedListener(new TextWatcher(){


   @Override
   public void afterTextChanged(Editable arg0) {
    }

   @Override
   public void beforeTextChanged(CharSequence s, int start, int count, int after) {

   }

   @Override
   public void onTextChanged(CharSequence txtWatcherStr, int start, int before, int count){
       if(count==maxTextLength ){
           InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
    }
 }
});

答案 2 :(得分:1)

试试这个:

tvSecondary.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count)
    {
        if(tvSecondary.getText().toString().length()>0)
        {
            add your hide-keyboard code
        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) 
    {

    }

    @Override
    public void afterTextChanged(Editable s) 
    {

    }
});