#android #android-layout #xamarin #xamarin.android #mvvmcross
#Android #android-макет #xamarin #xamarin.android #mvvmcross
Вопрос:
Что нам нужно выполнить:
- Как пользователь я хочу видеть изображение с максимальным размером на экране, от нижней части экрана до нижней части заголовка
- Когда клавиатура поднимается или опускается, изображение должно изменять размер, чтобы оно всегда было полностью видно, используя максимальное пространство.
Я добился этого в мини-проекте, выполнив следующие действия:
1 — Добавьте следующий атрибут в Android.manifest.xml свойство приложения:
android:windowSoftInputMode="adjustResize"
2 — Добавление этой строки кода в обработчик события MainActivity onCreate:
Window.SetSoftInputMode(SoftInput.AdjustResize);
3 — использование этого свойства layout в объекте ImageView:
android:layout_weight="1"
Это отлично работает в мини-проекте, но когда я переношу этот код в наш реальный проект, он не работает. Когда клавиатура запрашивает, изображение и заголовок, кажется, прокручиваются вверх.
Размер изображения не изменяется, изображение отображается не полностью, а заголовок вообще не отображается.
Основное отличие в реальном проекте заключается в том, что он использует MvvmCross и не имеет класса MainActivity. Существует класс MainApplication, который объявлен как:
public class MainApplication : MvxAndroidApplication<Setup, App>
Я не могу добавить Окно.Установите там softinputmode, потому что в нем говорится: «CS0120: ссылка на объект требуется для окна нестатического поля, метода или свойства.SetSoftInputMode(программный ввод)'»»
Поэтому я попытался использовать его в действии просмотра следующим образом:
[Activity(Label = "PhotoCaptionView", WindowSoftInputMode = SoftInput.AdjustResize, ScreenOrientation = ScreenOrientation.Portrait, Theme = "@style/IM.Theme.Main", LaunchMode = LaunchMode.SingleTask)]
public class EditPostView : BaseIMActivity<EditPostViewModel>
protected override void OnCreate(Bundle bundle)
{
Window.SetSoftInputMode(SoftInput.AdjustResize);
base.OnCreate(bundle);
}
Обратите внимание, что я устанавливаю SoftInput.Отрегулируйте размер в двух местах, в качестве декоратора, а также встроенного.
Я также добавил это свойство в манифест Android, но, похоже, ничто не заставляет adjustResize работать. Я не знаю, что еще попробовать.
Ответ №1:
Проблема заключалась в style.xml файл, в котором было установлено это свойство:
<item name="android:windowFullscreen">true</item>