50

我有一个带有 2 个不同片段的 ViewPager。对于第一个片段,我想对其进行定义,使其不会在软键盘打开时调整大小。对于第二个片段,我想让它调整大小。

设置android:windowSoftInputMode="adjustPan"清单内部将适用于两个片段,但我想在两者之间改变它。

谷歌搜索后我做了什么:

    // create ContextThemeWrapper from the original Activity Context with the custom theme
    Context context = new ContextThemeWrapper(getActivity(), R.style.NoResize);
    // clone the inflater using the ContextThemeWrapper
    LayoutInflater localInflater = inflater.cloneInContext(context);
    // inflate using the cloned inflater, not the passed in default
    return localInflater.inflate.inflate(R.layout.my_layout,container,false);

我已经将主题定义为:

<style name="NoResize" parent="@style/AppTheme">
    <item name="android:windowSoftInputMode">adjustPan</item>
</style>

该活动是使用默认的 windowSoftInputMode 定义的,它在软键盘打开时调整视图的大小。

将一直在努力,直到它得到解决,但如果其他人有这个问题并解决了它,听到任何想法会很棒。

谢谢!

4

1 回答 1

93

您可以调用每个 onCreateView

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

检查http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_RESIZE

就我而言,这并不能解决问题,因为我有一个透明的片段(一个聊天窗口),我需要调整它的大小,而底部的片段不应该。但我认为它可能对你有用。

于 2013-11-26T13:54:08.677 回答