Umgebung
Android-Version: Android 16 (API 35)
Xamarin.Forms-Version: 5.0.0.2578
Was ich versucht habe (alle fehlgeschlagen):
- Versuchte AdjustResize, AdjustPan, AdjustNothing, StateAlwaysHidden
- Es wurde versucht, die Aktualisierung des Layouts mit RequestLayout(), ForceLayout(), Invalidate()
- Überwacht mit zu erzwingen
Code: Select all
ViewTreeObserver.GlobalLayout().
Ansicht vor der Tastatur
Ansicht mit der Tastatur
Ansicht nach dem Ausblenden der Tastatur
MainActivity.cs
Code: Select all
private void RegisterKeyboardListener()
{
_rootView = Window.DecorView.RootView;
_globalLayoutHandler = (sender, args) =>
{
var rect = new Android.Graphics.Rect();
_rootView.GetWindowVisibleDisplayFrame(rect);
int screenHeight = _rootView.Height;
int keypadHeight = screenHeight - rect.Bottom;
bool isKeyboardVisible = keypadHeight > screenHeight * 0.15;
_rootView.Post(() =>
{
_rootView.PostDelayed(() =>
{
_rootView.RequestLayout();
_rootView.Invalidate();
}, 16);
});
_keyboardWasVisible = isKeyboardVisible;
};
_rootView.ViewTreeObserver.GlobalLayout += _globalLayoutHandler;
}
Code: Select all
if (!e.HasFocus)
{
var rootView = MainActivity.Instance.Window.DecorView.RootView;
rootView.ViewTreeObserver.GlobalLayout += (sender, args) =>
{
var heightDiff = rootView.RootView.Height - rootView.Height;
if (heightDiff < 200) // Keyboard is hidden
{
rootView.RequestLayout();
}
};
}
Mobile version