0

我想EditText在android中点击后隐藏键盘,我尝试了下面的代码,但它不起作用。

 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

4 回答 4

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"  />
于 2013-10-23T06:56:05.487 回答
0

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

<activity
     android:name="YourActivity"
     android:configChanges="keyboardHidden"
     android:windowSoftInputMode="stateHidden"/>
于 2013-10-23T07:01:02.690 回答
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();
                }
            }
        });
于 2013-10-23T07:18:50.293 回答
0

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

首先在您选择的活动中创建状态侦听器和将执行关闭的方法(基于打开状态)。

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。

于 2013-10-23T07:40:25.193 回答