getWindow()。setSoftInputMode无法按预期工作

时间:2013-12-10 09:42:31

标签: android android-layout android-softkeyboard

在我的Android项目中,我希望只有一个片段的softInputModeadjustPan

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

    android:windowSoftInputMode="adjustPan"

但我片段中的那些行什么都不做:

   @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);
   }

为什么会这样做以及可以采取哪些措施来解决问题?

4 个答案:

答案 0 :(得分:3)

尝试同时设置android:windowSoftInputMode =" adjustPan"在你的清单中。我知道在清单和代码中设置软输入模式看起来多余,但这是它对我有用的唯一方式。

答案 1 :(得分:1)

您正在设置活动的软输入模式,我不确定它是否可行但尝试:

myFragment.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

修改

我想你正在处理片段的onPause和onResume,你试过使用父活动吗?结果可能与你相同,因为有时他们是相连的。

答案 2 :(得分:0)

实施活动的“ onCreate”方法。

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);

        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    }

答案 3 :(得分:0)

您必须这样做:

((AppCompatActivity)getContext()).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);