gpt4 book ai didi

android - 如何获取Android软键盘高度?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:05 25 4
gpt4 key购买 nike

我知道我可以使用“android:windowSoftInputMode="adjustPan"来做一些自动偏移。但我真的想为一些特殊目的获得软件键盘高度。

我发现这里有一个类似的主题:Getting the dimensions of the soft keyboard .但显然,这不是一个通用的解决方案。

是否有通用的方法或内置方法来获取软键盘高度? (或者如何获取当前光标位置和软键盘顶部位置之间的偏移值?)

非常感谢

最佳答案

在Xamarin.Android中获取Soft Keyboard Height,使用ViewTreeObserver.IOnGlobalLayoutListener监听GlobalLayout Change事件,计算root view前后的变化差,从而获取键盘高度。您可以在 native 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
}
}
}
}

关于android - 如何获取Android软键盘高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18435112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com