通过Monogame访问Android上的软键盘

我有一款以Monogame为目标的游戏,面向Android和iOS平台。 我需要为游戏开发一个login表单。 我已经开始推出我自己的UI组件(文本input,button等等),因为我已经读过,没有为此目的而常用的库。

现在,我正在寻找访问软键盘(目前为Android),但似乎无法得到它的工作。

我已经看了GamerServices模块,但我很确定这只适用于Windows操作系统。

我试图实现什么样的C#包装到Android API。 在Visual Studio 2015中debugging此代码时,ShowKeyboard函数无误地执行,但模拟器中的屏幕键盘不出现。

我已经将以下函数添加到由Monogame生成的Android Activity类中,然后在适当的游戏中访问这些函数。 代码执行,但唉,没有键盘。

public static void ShowKeyboard() { var pView = KeyboardConfig.game.Services.GetService<View>(); var inputMethodManager = KeyboardConfig.Application.GetSystemService(Context.InputMethodService) as InputMethodManager; inputMethodManager.ShowSoftInput(pView, ShowFlags.Forced); inputMethodManager.ToggleSoftInput(ShowFlags.Forced, HideSoftInputFlags.ImplicitOnly); } public static void HideKeyboard() { InputMethodManager inputMethodManager = KeyboardConfig.Application.GetSystemService(Context.InputMethodService) as InputMethodManager; inputMethodManager.HideSoftInputFromWindow(KeyboardConfig.pView.WindowToken, HideSoftInputFlags.None); } 

我没有推出我自己的工具来进行input,而是将用户推送到一个非Monogame活动中,以便接受input并将结果传递回去。 工作得很好,即使用户体验有点锯齿。

我将不得不重新实现我打算支持的任何其他平台的forms – 但这已经是一个问题。

  // go to authentication screen private void launchPlatformAuthentication() { #if __ANDROID__ var intent = new Intent(Android.App.Application.Context, typeof(ActivityAuth)); intent.SetFlags(ActivityFlags.NewTask); Activity1.ActivityConfig.Application.StartActivityForResult(intent, 0); #endif }