Xamarin Android WindowSoftInputMode不适用于FrameLayout中的片段

时间:2019-02-27 04:27:58

标签: android android-fragments xamarin xamarin.android

有一个Xamarin Android应用程序,但我确定这个问题也适用于非Xamarin。我的大多数片段都具有EditText控件。每次他们获得焦点时,软键盘都会按预期显示。但是,软键盘将覆盖视图下半部分的我的EditText框。

我看到可以在Activity类属性或清单中设置以下内容。我在“活动”类属性中对此进行设置:

    [Activity(Label = "MainActivity", ScreenOrientation = ScreenOrientation.Portrait, Theme = "@style/AppTheme", LaunchMode = LaunchMode.SingleTask, WindowSoftInputMode = SoftInput.AdjustResize)]

如您所见,我将WindowSoftInputMode设置为AdjustResize。好消息是,我可以确认这实际上对实际MainActivity上的EditText控件有效。

但是,从有效的MainActivity中,我也将片段放入了FrameLayout中。因此,我的MainActivity axml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:animateLayoutChanges="true"
    android:background="@drawable/sortingpackages">
    <LinearLayout
        android:id="@+id/LayoutControls"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="#FFFFFF"
        android:animateLayoutChanges="true"
        android:layout_marginTop="10dp">
        <ImageView
            android:src="@drawable/odenlogotransscaled"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView1"
            android:layout_marginTop="0.0dp"
            android:layout_marginBottom="0.0dp"
            android:layout_centerInParent="true"
            android:layout_gravity="center_horizontal" />
        <Spinner
            android:layout_width="220dp"
            android:layout_height="40dp"
            android:id="@+id/spSelectLocation"
            android:layout_margin="10dp"
            android:spinnerMode="dialog"
            android:dropDownWidth="220dp"
            style="@style/SpinnerOdenTheme" />
        <EditText
            android:layout_width="220dp"
            android:layout_height="35dp"
            android:id="@+id/tbUserLogin"
            android:layout_margin="10dp"
            android:hint="@string/UserLogin"
            android:ellipsize="start"
            android:gravity="left"
            android:inputType="text"
            android:background="@drawable/EditTextStyle"
            android:cursorVisible="true"
            android:textColorHint="#000000"
            android:padding="3dp" />
        <Button
            android:text="@string/Login"
            android:layout_width="220dp"
            android:layout_height="wrap_content"
            android:id="@+id/btnLogin"
            android:layout_margin="10dp"
            style="@style/TextButtonOdenTheme" />
        <Button
            android:text="@string/Exit"
            android:layout_width="220dp"
            android:layout_height="wrap_content"
            android:id="@+id/btnLogoutExit"
            android:layout_margin="10dp"
            style="@style/TextButtonOdenTheme" />
    </LinearLayout>
    <Button
        android:text="@string/Settings"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnSettings"
        android:layout_margin="10dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        style="@style/TextButtonOdenTheme" />
</RelativeLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/LoginFragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>
</RelativeLayout>

您可以看到我将Fragment Container的FrameLayout放在底部。我使用支持片段管理器交换到此FrameLayout中的任何片段均不遵守软键盘设置并调整大小或平移(我尝试过两种设置)。

我还尝试按照我正在阅读的帖子的建议将FrameLayout或整个Layout包装在ScrollContainer中,但没有任何解决方法。

其他人在将FrameLayout中的片段调整为软键盘时还有其他问题,我该如何解决?

谢谢!

0 个答案:

没有答案