当Viewragger可见Fragment时,EditText会自动打开软键盘

我有一个Fragment (兼容版本)与其编辑中的EditText 。 我使用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 "当Viewragger可见Fragment时,EditText会自动打开软键盘"

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

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

  <LinearLayout android:id="@+id/layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true" > <EditText android:id="@+id/retailer_search_text" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 

只要按照它。 而EditText应该在LinearLayout中。

你尝试过吗?

 <activity android:name=".YourActivityName" android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="stateHidden" /> 

编辑:

试试这个(我现在是一个坏的,但试试这个:))

  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,并推动所有的意见,当我点击编辑文本在片段视图(我的应用程序是嵌套片段的应用程序 – 片段中的片段)

我在这里和在互联网上尝试了十几个解决scheme,除了这一点,没有任何帮助,它是在XML中编辑EditText本身(不是上面的视图/不是清单/不是在创build活动/不是任何其他的)

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

我在这个主题上借用了ACengiz的解决scheme

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

只有两个人投票给他? 虽然对我来说,这是一个头痛后几个小时的救星

这对我有效。

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

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

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

尝试这个

 exitText.setFocusableInTouchMode(true);