在android中隐藏软键盘

时间:2013-10-23 06:53:16

标签: android android-softkeyboard

我想在android中点击EditText之后隐藏键盘我试过下面的代码,但是它无效。

 mPassword.setInputType(InputType.TYPE_CLASS_NUMBER);
    mPassword.requestFocus();
    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.showSoftInput(mPassword, InputMethodManager.RESULT_HIDDEN);

我还在活动清单中提供了android:windowSoftInputMode="stateHidden"。 我还在拿键盘。请告诉我如何隐藏软键盘?

4 个答案:

答案 0 :(得分:1)

您可以使用以下代码隐藏软键盘

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

此外,

如果您想在活动开始时隐藏,请将manifest文件编辑为

<activity android:name="com.your.package.ActivityName"
android:windowSoftInputMode="stateHidden"  />

答案 1 :(得分:0)

在清单文件中使用以下代码。

<activity
     android:name="YourActivity"
     android:configChanges="keyboardHidden"
     android:windowSoftInputMode="stateHidden"/>

答案 2 :(得分:0)

试试这个,

your_edittext.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                InputMethodManager m = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                if (m != null) {
                    m.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
                    your_edittext.clearFocus();
                }
            }
        });

答案 3 :(得分:0)

这是将键盘隐藏在任何地方的解决方案。

1st 在您选择的活动中创建州的监听器和将关闭的方法(基于打开状态)。

public class MainActivity extends SherlockFragmentActivity {

  private boolean mKeyboardOpen = false;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    Log.d(TAG, "onCreate()");

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    // add "keyboard open listener"
    final View v = findViewById(R.id.pager);
    v.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
      @Override
      public void onGlobalLayout() {
        int hRoot = v.getRootView().getHeight();
        int hView = v.getHeight();
        int heightDiff = hRoot - hView;
        // if more than 150 pixels, its probably a keyboard...
        mKeyboardOpen = heightDiff > 150;
        Log.d(TAG, "hRoot=" + hRoot + ", hView=" + hView + ", mKeyboardOpen=" + mKeyboardOpen);
      }
    });
  }


  public void closeSoftKeyboard() {
    if (mKeyboardOpen) {
      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
    }
  }
}

第二次从任何地方拨打((MainActivity) getActivity()).closeSoftKeyboard();,例如您的EditText的OnClickListener()

提示:我正在使用ViewPager根视图(R.id.pager),但您应该将其替换为您的视图根ID。