Xamarin Android WindowSoftInputMode не работает с фрагментом в FrameLayout - PullRequest
0 голосов
/ 27 февраля 2019

Есть приложение для Android Xamarin, но я уверен, что этот вопрос относится и к не-Xamarin.Большинство моих фрагментов имеют элементы управления EditText.Каждый раз, когда они получают фокус, программная клавиатура показывает, как ожидалось.Тем не менее, программная клавиатура закроет мои поля EditText в нижней половине просмотра.

Я видел, что могу установить следующее либо в атрибуте класса Activity, либо в манифесте.Я устанавливаю это в атрибуте класса Activity:

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

Как вы можете видеть, я устанавливаю WindowSoftInputMode в AdjustResize.Хорошей новостью является то, что я могу подтвердить, что это действительно работает для элементов управления EditText, которые находятся на фактической MainActivity.

Однако из своей работоспособности 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>

Вы можете видеть, что я поместил FrameLayout для контейнера фрагментов вниз.Любой фрагмент, который я заменяю в этом FrameLayout с помощью диспетчера фрагментов поддержки, не учитывает настройку программной клавиатуры и изменение размера или панорамирование (я пробовал обе настройки).

Я также попытался обернуть либо FrameLayout, либо весь макет внутри ScrollContainer, как было предложено в сообщении, которое я читал, и ничто не решает проблему.

У кого-нибудь еще есть проблема с получением фрагментов в FrameLayout для настройки на программную клавиатуру и как мне это исправить?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...