2

当键盘在xamarin forms android中弹出并且EditText字段位于屏幕底部时,状态栏和屏幕完全向上移动。我尝试使用

WindowSoftInputMode = SoftInput.AdjustPan 

WindowSoftInputMode = SoftInput.AdjustResize

但不幸的是,两者都不起作用,我也从我读过的一篇博客文章中加入了

Xamarin.Forms.Application.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);

if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
    Window.DecorView.SystemUiVisibility = 0;
    var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
    statusBarHeightInfo.SetValue(this, 0);
    Window.SetStatusBarColor(new Android.Graphics.Color(0,0,0, 255)); // Change color as required.
 }

启动应用程序后是另一种选择,但不幸的是这也失败了。还有其他选择吗?

4

1 回答 1

3

它是 Xamarin 中的一个错误。我在 mainActivity 中使用了以下代码

    if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
    {
                    Window.DecorView.SystemUiVisibility = 0;
                    var statusBarHeightInfo = typeof(FormsAppCompatActivity).GetField("_statusBarHeight", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
                    statusBarHeightInfo.SetValue(this, 50);
    }

并使用

Xamarin.Forms.Application.Current.On<Xamarin.Forms.PlatformConfiguration.Android>().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize);

问题是,如果你强行隐藏标题栏,它将不起作用

Forms.SetTitleBarVisibility(AndroidTitleBarVisibility.Never);

我注释掉了这段代码,问题就解决了。但是由于调整属性的大小,我遇到了很多问题,因为我设计了带有网格和星值的屏幕,这导致了许多不必要的问题。所以我不会伤心地使用这种方法。:(

于 2017-05-30T05:00:57.790 回答