Здравствуйте
Мне нужно показать софтверную клавиатуру, при этом не потеряв полноэкранный режим, когда с экрана убраны навигация, статус-бар, но что-то не получается. Происходит тоже самое, что и при вызове Dialog или алерта - появляются системные элементы управления. Как этого избежать ?
вот кусочки моего кода
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
public static Activity MyActivity;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
MyActivity = this; //костыль для имплементации интерфейса, который покажет клавиатуру
View decorView = Window.DecorView;
var uiOptions = (int)decorView.SystemUiVisibility;
int newUiOptions = (int)uiOptions;
newUiOptions |= (int)SystemUiFlags.LayoutStable;
newUiOptions |= (int)SystemUiFlags.LayoutHideNavigation;
newUiOptions |= (int)SystemUiFlags.LayoutFullscreen;
newUiOptions |= (int)SystemUiFlags.HideNavigation;
newUiOptions |= (int)SystemUiFlags.Fullscreen;
newUiOptions |= (int)SystemUiFlags.ImmersiveSticky;
decorView.SystemUiVisibility = (StatusBarVisibility)newUiOptions;
// Это переводит приложение в полноэкранный режим, где спрятаны все элементы управления
}
}
Потом я добавляю имплементацию интерфейса, показывающего клавиши в андроиде (ну и позже в ios)
public class CMyKeyboardShower: IMyKeyboardShower
{
public void ShowKeyboard()
{
InputMethodManager inputMethodManager = MainActivity.MyActivity.GetSystemService(Context.InputMethodService) as InputMethodManager;
inputMethodManager.ToggleSoftInput(ShowFlags.Forced, HideSoftInputFlags.ImplicitOnly);
//клавиатура появляется и возвращает системные элементы экрана
}
}
В принцыпе, то-же самое происходит, если вызвать просто дилог
MainActivity.MyActivity.RunOnUiThread(() =>
{
var alert = new AlertDialog.Builder(MainActivity.MyActivity);
alert.SetView(MainActivity.me_act.LayoutInflater.Inflate(Resource.Layout.layout1, null));
alert.Create().Show();
});
Буду рад подсказке, как перехватить/запретить появление системных элементов
Спасибо !
Есть мысль, что это невозможно в силу фундаментального устройства андроида, но вот напримре хром: