2013-10-23 172 views
0

我想在隐藏键盘后点击EditText在Android中我尝试了下面的代码,但它不工作。在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"。 仍然我越来越键盘。请告诉我如何隐藏软键盘?

+0

你为什么要在edittext焦点上隐藏键盘? –

+0

我想用我自己的键盘 –

+0

你试过我的回答吗?请让我知道它是否对你有所帮助。 – Saran

回答

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" /> 
+0

它没有waorking.still后点击我越来越键盘。 InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); \t \t imm.hideSoftInputFromWindow(mPassword.getApplicationWindowToken(),0); –

+0

编辑,检查它 –

+0

更新后也不能正常工作 –

0

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

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

我试过这个。不工作.. –

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(); 
       } 
      } 
     }); 
+0

不工作.... –

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替换它。

+0

更新了我的答案。 – Saran