相关疑难解决方法(0)

如何以编程方式获取Android导航栏的高度和宽度?

Android屏幕底部的黑色导航栏无法轻松移除.它从3.0开始就是Android的一部分,作为硬件按钮的替代品.这是一张图片:

系统栏

如何获得此UI元素的宽度和高度的大小(以像素为单位)?

graphics user-interface android android-activity

113
推荐指数
8
解决办法
10万
查看次数

Android:以编程方式检测设备是否具有硬件菜单按钮

我目前正在努力解决这个问题.我需要检查安装了应用程序的设备是否有硬件菜单键.因为它不存在于像Galaxy Nexus这样的设备上,所以我在这种情况下直接在UI中显示它.

我已经查看了PackageManager.hasSystemFeature(),但没有找到任何有用的东西.

有没有人这样做过?

hardware android menu key

42
推荐指数
2
解决办法
3万
查看次数

即使不在前景中,如何更改导航栏背景(不仅仅是颜色)?

背景

不知何故,应用程序" Navbar Apps "允许自定义导航栏的背景,即使它不在前景中,甚至不仅仅是简单的颜色.

在此输入图像描述

问题

我认为只有当应用程序位于前台时才能改变它的颜色......

我在一些自定义的roms上看到它,甚至在播放音乐时都有特效,但我不知道即使没有自定义ROM(或root)也可以自定义它.

问题

  1. 这是一个黑客?它们如何改变,而不仅仅是导航栏的颜色,甚至为它设置背景图像(包括动态的电池状态)?

  2. 是否也可以更改其他系统栏,例如通知栏?

  3. 它如何检查哪个应用程序位于前台(可能需要根据当前应用程序决定何时更改颜色)?它是一个新的API吗?我认为用于获取前台活动的API已被弃用,现在无论如何都没有帮助......

android android-navigation-bar

16
推荐指数
1
解决办法
1576
查看次数

Android资源notlong/long标识符不起作用

目前我有以下资源文件夹: 1.layout
-sw600dp
2. layout-sw600dp-notlong

我们的想法是我们有3种类型的设备,设备应该相应地使用正确文件夹中的资源.这些设备是:
1.三星Galaxy Tab 10.1,1280 X 800 mdpi.16/10
2.华硕Transformer TFT 101,1280 X 800 mdpi.16/10.
3.通用平板电脑,800 X 600 ldpi.4/3.

问题是所有3个设备都使用来自layout-sw600dp-notlong的资源.根据我的理解,4/3被归类为-notlong设备.

我的标识符使用有什么问题吗?或者是否有针对标识符报告的错误?

预先感谢.

android screen android-screen

8
推荐指数
2
解决办法
5691
查看次数

如何以编程方式检测 Mi 设备中的全屏手势模式

我正在编写一个需要计算屏幕高度才能正确显示内容的 Android 应用程序。但是当切换到全屏手势模式时,我在 Mi 设备(Mi 9 SE)中获得的高度不正确。如何获取屏幕的真实高度,或检查用户是否在 Mi 设备中打开了全屏手势模式?

我已经尝试过这些建议。

  1. 如何在android Q中检测全屏手势模式
  2. Android:检测导航栏可见性
  3. 检查导航栏

android fullscreen xiaomi

7
推荐指数
1
解决办法
1046
查看次数

android获取其他屏幕方向的屏幕大小

从Android 3.0开始,显示屏上有一个带有后退和主页按钮的导航栏.现在,如果我得到这样的屏幕尺寸

ClockLwp.ScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
ClockLwp.ScreenWidth = getWindowManager().getDefaultDisplay().getWidth();
Run Code Online (Sandbox Code Playgroud)

这个的

getResources().getDisplayMetrics().widthPixels
getResources().getDisplayMetrics().heightPixels
Run Code Online (Sandbox Code Playgroud)

我对风景和肖像有不同的价值.这是我的意思的一个例子:

Acer Iconia A500人像模式:800 x 1232 Acer Iconia A500风景模式:1280 x 752

AFAIK适用于所有带有这种导航栏的设备.(例如三星Galaxy Nexus,GalaxyTab 10.1等)

现在我的问题是,如果我处于纵向模式,我怎样才能获得横向模式的值,反之亦然?

android screen-orientation screen-size

6
推荐指数
1
解决办法
2351
查看次数

Android:检测导航栏的可见性

如何检测导航栏的存在并将其隐藏?

在我的onCreate()I调用hideNavigationBar()方法中隐藏导航栏,然后我注册一个监听器以隐藏导航栏,每当用户触摸屏幕上的文档报告的任何位置时它就变得可见.当触摸事件后导航栏变为可见hideNavigationBar()时,侦听器再次调用该方法,但它没有效果,该栏仍然可见.

这是我的onCreated()方法:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        hideNavigationBar();

        View decorView = getWindow().getDecorView();
        decorView.setOnSystemUiVisibilityChangeListener
                (new View.OnSystemUiVisibilityChangeListener() {
                    @Override
                    public void onSystemUiVisibilityChange(int visibility) {
                        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                            Toast.makeText(getApplicationContext(), "Visible", Toast.LENGTH_SHORT).show();
                            hideNavigationBar();
                        } else {
                            Toast.makeText(getApplicationContext(), "Not visible", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }
Run Code Online (Sandbox Code Playgroud)

这是我的hideNavigationBar()方法:

 private void hideNavigationBar() {

        Toast.makeText(getApplicationContext(), "hideNavigationBar()", Toast.LENGTH_SHORT).show();

        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    } …
Run Code Online (Sandbox Code Playgroud)

android

6
推荐指数
2
解决办法
1万
查看次数

在onePlusOne设备中逐步检测软导航栏的可用性?

我需要检查一个设备是否有软导航栏,我按照这里的建议.

它工作得很好,除了onePlus设备,出于某种原因,这段代码:

int id = resources.getIdentifier("config_showNavigationBar", "bool", android");
    return id > 0 && resources.getBoolean(id);
Run Code Online (Sandbox Code Playgroud)

虽然显示了软导航栏,但返回false.

知道如何才能得到正确的结果?

我更喜欢不计算实际宽度和可用宽度,这似乎是昂贵的操作.

谢谢.

android

5
推荐指数
1
解决办法
2305
查看次数