Android似乎在具有虚拟/屏幕按钮的设备上切断了底部100px。是否可以检测当前手机/平板电脑是否正在使用屏幕按钮,以便我可以计算丢失的空间?如果是这样,是否也可以获得按钮的高度?
答案 0 :(得分:1)
您可以使用hasPermanentMenuKey()
检查设备是否具有永久(硬件)菜单按钮。它可以用作以下内容:
boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
请注意,此技术仅适用于API 14+(ICS,JB)。没有设备pre-API-11有菜单按钮,所以只留下没有检查的API 11-13;请注意,这3个API级别目前只有2.3% of the Android population。
或者(虽然不可靠),您可以尝试搜索D-Pad:
boolean hasDpad = getResources().getConfiguration().naviation == Configuration.NAVIGATION_DPAD;
没有办法检查硬件搜索按钮(我会假设回家/回来),如here所示。 (还有here;这个帖子提出了一种替代方法,但我不确定它是否适用于您的情况。)
我将提到两件事:虚拟按钮永远不应该覆盖您的内容。它们会从设备窗口的高度减去(由显示器的指标获取),但如果您使用match_parent
作为高度,它们将永远不会妨碍您的布局。其次,无法获取虚拟按钮栏的确切高度;它可能在构建之间改变。 Android API中也没有原生方式来获取“可用”屏幕空间(底部栏未覆盖的区域)。
所以,以下是我的建议:
ViewGroup
或LinearLayout
或其他内容。)onLayout()
](http://developer.android.com/reference/android/widget/LinearLayout.html#onLayout(boolean,int,int,int,int))或onMeasure()
,并获得布局的完全高度由此。 (您可能希望使用this作为参考。)答案 1 :(得分:0)
从我记忆中,底部的虚拟按钮仅在Android版本3.0(Honeycomb)及更高版本中。 至于高度问题,我从未真正研究过它。