Задать вопрос
@mib

Xamarin.android ToggleSoftInput как сделать FullScreen?

Здравствуйте
Мне нужно показать софтверную клавиатуру, при этом не потеряв полноэкранный режим, когда с экрана убраны навигация, статус-бар, но что-то не получается. Происходит тоже самое, что и при вызове 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();
});


Буду рад подсказке, как перехватить/запретить появление системных элементов
Спасибо !

Есть мысль, что это невозможно в силу фундаментального устройства андроида, но вот напримре хром:
f4297c7b4b844b6283f7aff864acd291.png
  • Вопрос задан
  • 291 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы