我找到了这个问题的一些答案,但没有一个对我有用。我的Fragment中有一个Edit文本,它会在应用程序启动时启动。当此片段打开时,软键盘也会弹出。我该如何防止这种情况发生?这就是我在片段中的onCreateView方法中所拥有的....
try {
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(userName.getWindowToken(), 0);
}catch(Exception e) {
e.printStackTrace();
}
答案 0 :(得分:7)
在onCreateView
或onActivityCreated
中尝试此操作。
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
答案 1 :(得分:1)
我最近的项目我使用下面的代码来隐藏键盘布局,也许你可以试试。(我从Wordpress-android的源代码中学习它)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_template_add_doc, container, false);
//hide the keyboard if it is visible
InputMethodManager imm = (InputMethodManager) getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
return view;
}
答案 2 :(得分:1)
尝试以下逻辑隐藏键盘自动打开。
尝试将编辑文本放在单独的linearlayout中并设置android:focusableInTouchMode="true"
。这将自动避免键盘自动打开。
<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/edit_text"
android:layout_width = "match_content"
android:layout_height = "wrap_content"/>
</LinearLayout>
如果上述操作失败,请使用以下代码以编程方式隐藏。将其写为单独的函数并在代码中调用它。
在创建视图后,在片段中调用此方法,如下所示。
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
hideKeyboard();
}
public void hideKeyboard() {
InputMethodManager inputMethodManager = (InputMethodManager) activity
.getSystemService(android.content.Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
activity.getCurrentFocus()
.getWindowToken(), 0);
} // hideKeyboard
祝你好运..!
答案 3 :(得分:1)
这对我有用,试试这种方式
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
hideKeyboard(getActivity());
}
public static void hideKeyboard( Context context ) {
try {
InputMethodManager inputManager = ( InputMethodManager ) context.getSystemService( Context.INPUT_METHOD_SERVICE );
View view = ( (Activity) context ).getCurrentFocus();
if ( view != null ) {
inputManager.hideSoftInputFromWindow( view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS );
}
} catch ( Exception e ) {
e.printStackTrace();
}
}
答案 4 :(得分:1)
您还可以在AndroidManifest.xml中将此行添加到片段活动中。
要添加的行:- android:windowSoftInputMode =“ stateHidden | adjustResize”
请参见下面的代码段:-
<activity android:name=".activity.FragmentActivity"
android:windowSoftInputMode="stateHidden|adjustResize"/>
答案 5 :(得分:0)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@color/background_listview"
android:orientation="vertical">
在主上部布局中使用此功能 设置focusable true和android:focusableInTouchMode true
<强>机器人:可聚焦= “真”强>
<强>机器人:focusableInTouchMode = “真”强>