<activity> windowSoftInoutMode 不适用于 ViewPager 中的片段
Posted
技术标签:
【中文标题】<activity> windowSoftInoutMode 不适用于 ViewPager 中的片段【英文标题】:<activity> windowSoftInoutMode is not working for fragment which is in ViewPager 【发布时间】:2018-08-21 11:54:44 【问题描述】:我有一个Activity
,它显示了一个人的联系方式。它包含 CordinatorLayout(包含标题)、ViewPager
以及 TabLayout
。
其中一个片段在底部包含EditText
,它包含在 ViewPager 中。
我为此活动使用以下主题。 `
<style name="ToolbarAppThemeV4WithoutActionBar" parent="ToolbarAppThemeV4">
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="colorPrimary">@color/colorPrimaryDesignV4</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:textColorPrimary">@color/color_v4_primary</item>
<item name="android:actionMenuTextColor">@color/white</item>
<item name="android:textColorSecondary">@color/color_v4_secondary</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="alertDialogTheme">@style/Theme.AppCompat.Light.Dialog</item>
<item name="windowActionModeOverlay">true</item>
<item name="actionModeBackground">@color/color_multiselectTopBarbackground</item>
<item name="actionModeCloseDrawable">@drawable/in_ic_back_white</item>
<item name="actionModeStyle">@style/SomeStyle</item>
<item name="popupMenuStyle">@style/PopupmenuV4</item>
<item name="colorAccent">@color/colorPrimaryDesignV4</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
</style>
`
我正在尝试使用 android:windowSoftInputMode="adjustPan" 和 "adjustResize" 以及所有可能的组合,但它没有正确显示。
请假设以下片段屏幕显示在 ViewPager 中。 实际结果:
预期结果:
任何人都可以帮助我吗?我在清单中的活动的 windowSoftInputMode 中尝试了所有可能的组合。但没有任何效果。
请注意,如果我在不同的活动中使用相同的片段,它是有效的。尝试使用相同的主题,但在此活动中不起作用。
和ViewPager、Fragment、Cordinator Layout 有关系吗?请帮帮我。
包含 EditText 输入字段的 XML 布局: `
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="@color/white"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp">
<RelativeLayout
android:layout_
android:layout_>
<ImageView
android:id="@+id/toolbar_back"
android:layout_
android:layout_
android:layout_centerVertical="true"
android:layout_marginLeft="4dp"
android:layout_marginStart="4dp"
android:background="?android:attr/actionBarItemBackground"
android:scaleType="center"
android:src="@drawable/in_ic_back_red" />
<TextView
android:id="@+id/comments_toolbar_text"
android:layout_
android:layout_
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_toEndOf="@+id/toolbar_back"
android:layout_toRightOf="@+id/toolbar_back"
android:textColor="@color/colorPrimaryDesignV4"
android:textSize="@dimen/font_size_text_medium" />
<View
style="@style/HorizontalDividerV4"
android:layout_alignParentBottom="true" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
<RelativeLayout
android:layout_
android:layout_
android:layout_above="@+id/bottom_bar"
android:layout_below="@+id/toolbar">
<RelativeLayout
android:layout_
android:layout_
android:visibility="gone"
tools:visibility="visible">
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_
android:layout_
android:indeterminate="true" />
</RelativeLayout>
<FrameLayout
android:id="@+id/master_container"
android:layout_
android:layout_
android:background="@color/white">
<!--contains loader, error or empty states-->
<ScrollView
android:layout_
android:layout_>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical" />
</ScrollView>
<android.support.v7.widget.RecyclerView
android:layout_
android:layout_ />
<android.support.design.widget.CoordinatorLayout
android:layout_
android:layout_
android:layout_gravity="bottom|end"
android:layout_margin="8dp"
android:orientation="vertical"
android:padding="3dp"
android:scaleType="centerInside">
<RelativeLayout
android:id="@+id/fab"
android:layout_
android:layout_
android:layout_marginBottom="5dp"
android:layout_marginEnd="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginStart="5dp"
android:layout_marginTop="12dp"
android:background="@drawable/rounded_circle_fab"
android:elevation="3dp">
<ImageView
android:layout_
android:layout_
android:layout_centerInParent="true"
android:src="@drawable/in_ic_img_down_red_svg" />
</RelativeLayout>
<TextView
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:background="@drawable/rounded_circle_green"
android:elevation="3dp"
android:foregroundGravity="top"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/font_size_text"
android:textStyle="bold"
android:visibility="gone"
app:layout_anchor="@id/fab"
app:layout_anchorGravity="top|center_horizontal"
tools:text="4"
tools:visibility="visible" />
</android.support.design.widget.CoordinatorLayout>
</FrameLayout>
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:visibility="gone"
tools:visibility="visible">
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_
android:layout_
android:indeterminate="true" />
</RelativeLayout>
</RelativeLayout>
<FrameLayout
android:id="@+id/bottom_bar"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:background="@color/white"
android:paddingTop="6dp">
<View style="@style/HorizontalDividerV4" />
<RelativeLayout
android:id="@+id/actions_container"
android:layout_
android:layout_
android:layout_marginTop="1dp"
android:background="@color/white">
<ViewFlipper
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<ImageView
android:layout_
android:layout_
android:scaleType="center"/>
<ImageView
android:layout_
android:layout_
android:scaleType="centerInside"/>
</ViewFlipper>
<View
android:id="@+id/vertical_divider"
android:layout_
android:layout_
android:layout_centerVertical="true"
android:background="@color/color_divider_v4" />
<EditText
android:layout_
android:layout_
android:layout_centerVertical="true"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@color/white"
android:inputType="textMultiLine|textAutoCorrect|textCapSentences"
android:maxLines="3"
android:minLines="1" />
<ViewFlipper
android:layout_
android:layout_
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true">
<ImageView
android:layout_
android:layout_
android:scaleType="centerInside"/>
<ImageView
android:layout_
android:layout_
android:scaleType="centerInside" />
</ViewFlipper>
<View
android:layout_
android:layout_
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="6dp"
android:background="@drawable/rounded_circle_green"
android:visibility="gone"
tools:visibility="visible" />
</RelativeLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_marginTop="1dp"
android:background="@color/light_green_v4_bg"
android:gravity="center"
android:visibility="gone"
tools:visibility="gone">
<TextView
android:layout_
android:layout_
android:textColor="@color/color_v4_secondary"
android:textSize="@dimen/font_size_text"/>
</LinearLayout>
</FrameLayout>
</RelativeLayout>`
【问题讨论】:
在onCreateView中使用这个getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Layout is not floating above keyboard in Fragment in Android的可能重复
【参考方案1】:
android:windowSoftInputMode="adjustPan
就是这样工作的。你需要的是android:windowSoftInputMode="adjustResize"
。
尝试在运行时在片段中设置它并根据需要进行更改。
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
【讨论】:
应该可以。可能是您的布局有问题添加您的布局有问题。 它与视图层次结构有关吗?因为编辑文本包含在一个fragment中,而另一个fragment中又包含在ViewPager中,最后Activity最终变成了图片。 如果片段中存在Edittext
将片段根设为RelativeLayout
并在Fragment
中设置SoftInputMode
让我试试这个
已经在 RelativeLayout 中并尝试设置它的运行时间,但无法正常工作。我是否需要将整个视图层次结构设为这样?【参考方案2】:
试试:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
【讨论】:
以上是关于<activity> windowSoftInoutMode 不适用于 ViewPager 中的片段的主要内容,如果未能解决你的问题,请参考以下文章
<activity> 与 <activity/>。有啥区别? [复制]
AAPT:错误:在 <manifest><application><activity> 中发现了意外元素 <activity>