使用ViewPager可见Fragment时,EditText会自动打开软键盘

我有一个Fragment (兼容版本),其布局中包含EditText 。 我正在使用ViewFlipper在片段之间进行ViewFlipper 。 当我到达这个特定的Fragment ,软键盘会自动打开。 这不是我想要的。 这是我试图阻止它或隐藏它。

尝试:

 android:descendantFocusability="beforeDescendants" 

在片段的主视图上

尝试:

 android:windowSoftInputMode="stateHidden" 

 android:windowSoftInputMode="stateAlwaysHidden" 

在活动的清单中

尝试:

 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mViewPager.getChildAt(position).getWindowToken(), 0); 

在我的ViewPager的OnPageChangeListener上

尝试:

 InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(voucherView.findViewById(R.id.redeem_mobile_number).getWindowToken(), 0); 

在我片段中的onCreateView中

尝试:

 InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getView().findViewById(R.id.redeem_mobile_number).getWindowToken(), 0); 

在我的片段中的onStart中

尝试:

 voucherView.findViewById(R.id.redeem_mobile_number).clearFocus(); 

在我片段中的onCreateView中

在我看来,像onPageChangeListener是这样做的地方,因为其他调用发生在软键盘实际打开之前。 任何帮助都会很棒。

Solutions Collecting From Web of "使用ViewPager可见Fragment时,EditText会自动打开软键盘"

这篇文章解决了这个问题。

答案是将android:focusableInTouchMode="true"到包含EditTextLinearLayout 。 现在它不会自动调出软键盘。

     

跟着它吧。 EditText应该在LinearLayout中。

你试过这个吗?

  

编辑:

尝试这个(我现在是一个糟糕的但尝试这个):)

  Thread splashTread = new Thread() { @Override public void run() { try { sleep(1); } catch (InterruptedException e) { // do nothing } finally { runOnUiThread(new Runnable() { public void run() { InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(youreditText.getWindowToken(), 0); } }); } } }; splashTread.start(); 

当我点击片段视图中的编辑文本时,我有一个软键盘令人不安地popup并推动所有视图(我的应用程序是嵌套片段的应用程序 – 片段中的片段)

我在这里和互联网上尝试了十几个解决方案,但除此之外没有任何帮助,这是用XML编辑EditText本身(不是上面的视图/不是清单/不是覆盖创建活动/不是任何其他)

通过将android:focusableInTouchMode="false"行添加到EditText的xml中。

我在这个post上借用了ACengiz的解决方案

如何在android中点击edittext时阻止虚拟键盘?

只有2人投票给他? 虽然对我而言,经过几个小时的头痛后,它仍然是一个救星

将其添加到AndroidManifest.xml的activity标签keyboardHidden:不会让它自动打开软输入键盘。

 android:configChanges="orientation|keyboardHidden|screenSize" android:windowSoftInputMode="stateAlwaysHidden|adjustResize|stateHidden" 

这对我有用。

 edittext.setInputType(InputType.TYPE_NULL); if (android.os.Build.VERSION.SDK_INT >= 11) { edittext.setRawInputType(InputType.TYPE_CLASS_TEXT); edittext.setTextIsSelectable(true); } 

尝试这个

 exitText.setFocusableInTouchMode(true);