の高さの間の差を計算するGlobalLayout変更イベントをリッスンとの変化の違いを計算するためにViewTreeObserver.IOnGlobalLayoutListenerを使用しますキーボードの高さを得るために前後のルートビュー。ネイティブAndroidコードでも同様のことができます。ここ
は、コードされています、あなたの問題は
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
public static Android.Views.View RootView = null;
public void DetectSoftKeyboardHeight()
{
RootView = this.FindViewById(Android.Resource.Id.Content);
if(RootView!=null)
RootView.ViewTreeObserver.AddOnGlobalLayoutListener(new MyLayoutListener());
}
}
/// <summary>
/// My layout listener.
/// Detect Android Soft keyboard height
/// </summary>
public class MyLayoutListener : Java.Lang.Object, ViewTreeObserver.IOnGlobalLayoutListener
{
public void OnGlobalLayout()
{
// do stuff here
Android.Graphics.Rect r = new Android.Graphics.Rect();
if (Mobibranch.Droid.MainActivity.RootView != null)
{
Mobibranch.Droid.MainActivity.RootView.GetWindowVisibleDisplayFrame(r);
int screenHeight = Mobibranch.Droid.MainActivity.RootView.RootView.Height;
int keyboardHeight = screenHeight - (r.Bottom);
if (keyboardHeight > 0)
{
//Keyboard is up on screen
Android.Util.Log.Verbose("[[[[MyLayoutListener]]]]", "Keyboard is up on screen, Height: "+keyboardHeight);
}
else
{
//Keyboard is hidden
}
}
}
}
こんにちはLiangwang解決していますか?私も同じことが必要です。 – jrhamza
キーボードの高さを取得するための組み込みメソッドはありません。 ViewTreeObserver.OnGlobalLayoutListener()を使用する必要があります。 – aravindkanna