की ऊंचाई के बीच अंतर की गणना जाओ Xamarin.Android में शीतल कीबोर्ड ऊंचाई, ViewTreeObserver.IOnGlobalLayoutListener का उपयोग करें और घटना GlobalLayout परिवर्तन के लिए सुनने में परिवर्तन अंतर की गणना करने के कुंजीपटल की ऊंचाई प्राप्त करने के लिए पहले और बाद में मूल दृश्य। आप मूल एंड्रॉइड कोड में भी ऐसा ही कर सकते हैं।
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
}
}
}
}
स्रोत
2017-09-22 17:26:13
हाय Liangwang, आपकी समस्या हल हो रहा है:
यहाँ कोड है? मुझे इसकी भी आवश्यकता है। – jrhamza
कीबोर्ड ऊंचाई प्राप्त करने के लिए कोई अंतर्निहित विधि नहीं है। आपको ViewTreeObserver.OnGlobalLayoutListener() का उपयोग करना होगा – aravindkanna