2

Я работаю над проектом форм Xamarin. У меня много полей ввода в моем приложении, один из них находится в всплывающем окне, и всплывающее окно открывается в центре экрана устройства. Также несколько полей ввода находятся в режиме прокрутки. Проблема только в Android-приложении. Для iOS он работает отлично. Когда я нажимаю на поле «Ввод» со стороны всплывающего окна, открывается панель софт-клавиатуры и нарушается пользовательский интерфейс моего всплывающего окна. Итак, я решил установить WindowSoftInputMode = SoftInput.AdjustPan в мою основную деятельность. Это решает проблему моего пользовательского интерфейса всплывающих окон, но теперь, когда я нажимаю на другие поля ввода, мой ! [Просмотр прокрутки прекращает прокрутку] (несколько полей ввода находятся в боковом прокрутке). Я попытался использовать AdjustResize и остальные другие мягкие входы, но бесполезно. Любые идеи о том, как избавиться от этого?Проблема при настройке WindowSoftInputMode to AdjustPan

Initial popup UI

softkey_board_open

softkey_board_closed

ответ

1

В Android Xamarin.Forms приложение работает на одной деятельности Android, так WindowSoftInputMode устанавливается для всего приложения. Вы можете использовать службу инъекции зависимостей. На iOS он ничего не сделал, и на Android он установил WindowSoftInputMode в нужное вам значение. Затем используйте его, чтобы установить WindowSoftInputMode до и после показа всплывающего окна.

В Xamarin.Forms Forms.Context - это активность.

var window = ((Деятельность) Forms.Context) .Window; window.SetSoftInputMode (SoftInput.AdjustPan);

1

На Android Xamarin.Forms приложений работает на одной деятельности Android, так WindowSoftInputMode устанавливается на глобальном уровне. Вы можете сделать службу инъекции зависимостей. На iOS он ничего не сделал, и на Android он установил WindowSoftInputMode в нужное вам значение. Затем используйте его, чтобы установить WindowSoftInputMode до и после показа всплывающего окна.

В Xamarin.Forms Forms.Context Деятельность.

var window = ((Activity)Forms.Context).Window; 
window.SetSoftInputMode(SoftInput.AdjustPan); 
Смежные вопросы