I need to change the navigation bar on android. Just like the 'light' variant on the right in the image below
as given in https://www.google.co.in/design/spec/layout/structure.html#structure-system-bars.
现在,我可以使用以下命令更改导航栏的背景
第一个月
我得到
但是似乎没有办法把按钮颜色改成深色。
任何人都知道怎么做。
附言:
在AOSP中研究负责导航按钮的类时,我可以找到NavigationBarView.java、PhoneStatusBar.java、PhoneWindowManager.java、navigation_bar.xml。
我在考虑为ic_sysbar_recent
这样的导航栏按钮获取可绘制对象的引用并更改它们的色调。但这些是私有的,我无法获取它们的引用。
此外,我还看到有人使用L-NAVBAR的暴露库来做这件事,但我不想使用任何外部库。
7条答案
按热度按时间ycl3bljg1#
如果您使用的是API 27(Android 8.1)或更高版本,您可以在主题中使用此功能:
您可以创建一个名为 values-v27 的文件夹,并放置一个带有浅色导航栏的主题版本(在styles.xml中),然后使用上面的代码来获得深色导航栏按钮。
这样,Android 8.0或更低版本的用户将获得标准(黑色)导航栏,而Android 8.1或更高版本的用户将获得带有黑色按钮的白色导航栏。
laik7k3q2#
从Android O开始,它变得非常简单,你可以:
要使此操作生效,窗口必须请求FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,而不是FLAG_TRANSLUCENT_NAVIGATION。
文件:https://developer.android.com/reference/android/view/View.html#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
kqlmhetl3#
您可以调整
windowLightNavigationBar = true/false
和navigationBarColor = @color/yourColorId
一共有4个案例,我做了个实验:
简而言之,您不需要
windowLightNavigationBar= false
,而navigationBarColor=White
或
windowLightNavigationBar= true
而navigationBarColor=Black
(这将在某些设备上连接)bmvo0sr54#
如果您的目标用户API级别为27或更高,只需在AppTheme中使用此行
但是如果你的目标用户API级别小于27或者更高,你可以使用这些行
通过这样做,具有API级别27或更高的用户获得BottomNav图标的改变的颜色,但是具有API级别小于27的用户不能享受这些特征
rfbsl7qr5#
如果你正在寻找一个简单的java方法,下面的代码可以工作
内部活动
vddsk6oq6#
活动中
导航栏图标-深色
导航栏图标-白色
在片段中
导航栏图标-深色
导航栏图标-白色
l7mqbcuq7#
只需添加这一行,您可以在应用程序运行时