Есть приложение для 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 для настройки на программную клавиатуру и как мне это исправить?
Спасибо!