我正在试图定位Android中软按钮条的位置(在这里,它们不是硬件回退、菜单等按钮,而是显示在屏幕上)。
我知道如何获得实际窗口大小(以像素为单位)
Display d = getWindowManager().getDefaultDisplay();
DisplayMetrics realDisplayMetrics = new DisplayMetrics();
DisplayMetrics displayMetrics = new DisplayMetrics();
d.getRealMetrics(realDisplayMetrics);
d.getMetrics(displayMetrics);..。然后看看“常规”显示指标是否与“真实”显示指标相比较。因此,我知道软按钮条是在水平还是垂直位置(以及它是多少像素),但我不知道它是在左边还是在右边。
有什么办法能找回那个吗?
编辑:代码的上下文在一个活动中(按要求)。
发布于 2017-09-17 00:06:39
系统窗口所在位置(如状态栏和导航栏)的唯一可靠指示是通过使用系统窗口内嵌(如我为什么要在fitsSystemWindows上写博客中所解释的)。
在API 21之前,这要求您的活动的根视图是重写fitsSystemWindows()的子类-传递给您的Rect将告诉您状态栏/导航栏的大小(取决于您在活动中设置了哪些标志)。
但是,在API 21+上,您可以不使用ViewCompat.setOnApplyWindowInsetsListener创建自定义视图就可以这样做。
ViewCompat.setOnApplyWindowInsetsListener(yourRootView,
new OnApplyWindowInsetsListener() {
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
// Use insets.getSystemWindowInsetBottom(), etc to extract
// the size and location of the system windows
return ViewCompat.onApplyWindowInsets(v, insets);
}
});https://stackoverflow.com/questions/46259099
复制相似问题