getWindow().setSoftInputMode 未按预期工作

Bud*_*ius 6 android android-layout android-softkeyboard

在我的 Android 项目中,我希望softInputMode只有一个片段是adjustPan.

将以下行添加到我的清单(在活动内)按预期工作:

android:windowSoftInputMode="adjustPan"
Run Code Online (Sandbox Code Playgroud)

但是我片段中的以下几行什么都不做:

@Override
public void onResume() {
   super.onResume();
   getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
}

@Override
public void onPause() {
    super.onPause();
    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED);
}
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样以及可以做些什么来解决?

Ayo*_*oub 3

您正在为活动设置软输入模式,我不确定它是否有效,但请尝试:

myFragment.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Run Code Online (Sandbox Code Playgroud)

编辑:

我想您正在使用片段的 onPause 和 onResume ,您是否尝试过使用父活动的 onPause 和 onResume ?结果可能是一样的,因为有时它们是相连的。

  • 片段没有“getWindow()”(https://developer.android.com/reference/android/app/Fragment.html),并且它们位于活动内部。 (6认同)