我正在使用 AppCompatDialogFragment
来显示 BottomSheetDialog
. 单击 Navigation Bar
上的后退按钮将关闭 BottomSheetDialog
.
我想将 Navigation Bar
上的图标从后退按钮更改为'arrow-down'图标 . 默认情况下,这是在显示键盘时完成的,我想为底部工作表复制它 .
要清楚,这里有我所拥有的:
这就是我需要的:
请注意,后退按钮是“向下箭头” .
导航栏是一个系统ui组件,我没有看到改变它的外观的方式,看起来像键盘可见时显示的导航栏 .
3 回答
在Android O中,引入了更改图标的概念,但它仍然通过第三方应用程序 . Custom Navigation Bar使用
WRITE_SECURE_SETTINGS
更改图标 . 在Android O中,您可以更改条形图的显示,即浅色或深色主题 .Solution 2 可以为您提供更多帮助 . 您可以在导航栏上创建一个
popup window
,其中包含所需的布局,即3个按钮,最近的应用程序和主页按钮 . 通过这种方式,您可以相应地更改后退按钮图标 . 确保弹出窗口与导航栏的高度相同,然后您可以为家庭和最近的应用程序创建自己的功能,然后在function
中关闭BottomSheetDialog
并删除该弹出窗口 .以下是主页密钥以及最近的应用程序的代码 . 对于后退按钮,请使用您自己的图标执行相应的操作 .
对于主页按钮 .
对于最近的应用 .
对于Back Button //使用您的图标和关闭BottomSheetDialog的功能 .
用于计算navigationBar的高度
您也可以通过
adb
命令执行此操作,但请确保它可能会弄乱您的navigationBar
并且您无法取回原始navigationBar
.我希望它有所帮助 .
正如已经回答的那样,它将在Android O中引入 .
对于以前的版本,它只能用于Android 3.x,或4.4使用标志为
SYSTEM_UI_FLAG_IMMERSIVE
,SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
,SYSTEM_UI_FLAG_HIDE_NAVIGATION
等 . 但仍然非常有限,需要花费很多精力才能得到一个不太友好甚至不好的结果 .原因是因为它不可能,因为它是一个安全问题 . 应用可能会阻止用户退出应用 .
看看这些链接:
Android overlay on top of software buttons
Hide System Bar in Tablets
http://room-15.github.io/blog/2015/03/17/overlaying-the-system-navigation-bar/
This article非常清楚地描述了如何在Android Oreo中完成它 .