在我的Android项目中,我希望只有一个片段的softInputMode
为adjustPan
将以下行添加到我的清单(活动内部)按预期工作:
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);
}
为什么会这样做以及可以采取哪些措施来解决问题?
答案 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);