Tastaturproblem in Android 16 für die Xamarin-AnwendungAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Tastaturproblem in Android 16 für die Xamarin-Anwendung

Post by Anonymous »

Ich habe eine Xamarin-Anwendung und wann immer sie unten dort, wo die Tastatur erscheint, einen Eintrag hat, ändert sich die Größe und sie erscheint über der Tastatur, so dass ich sehen kann, was ich tippe, aber gleich nachdem ich mit der Eingabe fertig bin und ich auf „Fertig“ klicke oder außerhalb des Eintrags tippe, versucht die Tastatur nach unten zu fahren und der Bildschirm versucht, die Größe zu ändern, aber er bleibt in der Mitte der Hälfte hängen und unten auf dem Bildschirm erscheint ein schwarzer Bildschirm, so dass mein Bildschirm auf halber Höhe der Tastatur schwarz bleibt.
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().
Aber ich kann den ursprünglichen reibungslosen Übergang zu Android 14 nicht schaffen. Für eine Sekunde sehe ich immer noch einen schwarzen Bildschirm.
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;
}
Benutzerdefinierter Renderer:

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();
}
};
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post