有没有办法知道屏幕上显示的键盘大小?
我正在使用Cocos2dx进行编程,但我想知道Android部分或Cocos部分屏幕中显示的键盘高度,这没关系.
我知道Keyboard有一个getHeight()方法,但我不想创建新的键盘,我想使用默认键盘.
如何在Android中获得虚拟键盘的高度?可能吗?
我尝试从主窗口获取它,但它给了我完整的应用程序高度.但我想获得键盘高度.
Android在API 28上增加了缺口支持,但如何在运行API 27的设备上处理它(荣誉10,华为P20等)?
我试图使用,DisplayCutoutCompat但我无法创建它的实例,因为文档没有真正指出如何创建一个.
如何创建构造函数参数值:Rect safeInsets,List<Rect> boundingRects?
我也查看了构造函数的源代码,这对我来说有点混乱:
public DisplayCutoutCompat(Rect safeInsets, List<Rect> boundingRects) {
this(SDK_INT >= 28 ? new DisplayCutout(safeInsets, boundingRects) : null);
}
Run Code Online (Sandbox Code Playgroud)
这将始终在运行API <28的设备上返回null .先感谢您.
我正在开发一款游戏,当它弹出时我希望在软键盘上方有一个EditText位置.
以下是我在主要活动中构建视图层次结构时的代码:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
viewGroup = new RelativeLayout(this);
viewGroup.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
view = new GameView(this);
RelativeLayout.LayoutParams vLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
vLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
view.setLayoutParams(vLayoutParams);
viewGroup.addView(view);
editText = new GameEditText(this);
RelativeLayout.LayoutParams etLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
etLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
editText.setGravity(Gravity.BOTTOM);
editText.setLayoutParams(etLayoutParams);
viewGroup.addView(editText);
setContentView(viewGroup);
Run Code Online (Sandbox Code Playgroud)
这是我的AndroidManifest.xml(重要的部分):
<activity
android:name="app.ember.MainActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="sensorLandscape"
android:windowSoftInputMode="adjustResize"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
额外的信息:
有什么建议?
这是一些花哨的截图:
游戏没有键盘:

键盘和WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS设置游戏(显示器中显示图层层次结构的样子):

游戏键盘和那些标志没有设置.

这是所需的输出:

android relativelayout glsurfaceview android-layout android-edittext
我在两个片段之间有一个动画.第二个片段将调出一个键盘.由于键盘将覆盖屏幕的某些部分,我手动需要在那里调整间隔视图以调整我的视图.使用android:windowSoftInputMode="adjustResize"将导致我的过渡动画变得超级滞后.使用adjustNothing在另一方面会使其光滑.
那么有没有办法获得键盘高度而不使用adjustResize?
编辑:
我的问题是不同的fe 是否有任何方式在Android中获取设备的虚拟键盘的高度,因为我无法添加adjustResize
我的网站上有私人消息功能。消息窗口是一个固定元素:
position: fixed;
bottom: 0;
Run Code Online (Sandbox Code Playgroud)
在 iOS 上,当打开位于消息窗口最底部的输入时,键盘只是将整个网站推到顶部,这样您仍然可以看到您正在输入的内容。
但是,在 Android 上,键盘只是重叠所有内容,因此您不再看到输入元素:
我该怎么做才能让它在 iOS 和 Android 上都能运行?