我的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就是这样做的地方,因为其他调用是在软键盘实际打开之前发生的。任何帮助都会很棒。
答案 0 :(得分:77)
This帖子解决了这个问题。
答案是将android:focusableInTouchMode="true"
添加到包含LinearLayout
的{{1}}。现在它不会自动调出软键盘。
答案 1 :(得分:8)
<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中。
答案 2 :(得分:5)
你试过这个吗?
<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();
答案 3 :(得分:1)
将其添加到AndroidManifest.xml
中的活动代码
keyboardHidden:不会让它自动打开软键盘。
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize|stateHidden"
答案 4 :(得分:1)
当我点击片段视图中的编辑文本时(我的应用程序是嵌套片段的应用程序 - 片段中的片段),我有一个软键盘令人不安地弹出并推动所有视图(
我在这里和互联网上尝试了十几个解决方案,但除此之外没有任何帮助,这是用XML编辑EditText
本身(不是上面的视图/不是清单/不是覆盖创建活动/不是任何其它)
将android:focusableInTouchMode="false"
行添加到EditText的xml。
我在这个帖子中借用了ACengiz的解决方案
how to block virtual keyboard while clicking on edittext in android?
只有2人投票给他?虽然对我来说,经过几个小时的头痛后,这是一个救星
答案 5 :(得分:0)
这对我有用。
edittext.setInputType(InputType.TYPE_NULL);
if (android.os.Build.VERSION.SDK_INT >= 11)
{
edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);
edittext.setTextIsSelectable(true);
}
答案 6 :(得分:0)
试试这个
exitText.setFocusableInTouchMode(true);