Android Material Component BottomNavigation顶部阴影放置在底部时与居中时不同

时间:2019-02-09 21:46:01

标签: android bottomnavigationview material-components-android

我正在尝试向导航栏添加更多高程,当我将其高程更改为layout_gravity中心上的高程时,它会像我期望的那样阴影,但是当我将其锚定到底部时,高程将被覆盖或阴影被重置。

布局:

println

外观示例: enter image description here enter image description here

1 个答案:

答案 0 :(得分:2)

并不是阴影被覆盖或重置,实际上是对Material Design中阴影的误解。

在Material Design中,更改视图高程时看到的阴影实际上是根据阴影在现实世界对象中的显示方式计算的。

实际上,阴影并非来自任何地方。相反,它们是在有光源照向对象时出现的。如果您查看此link,您会发现Google提到Material Design中的阴影是由两个虚拟光源创建的。一种来源称为按键灯,另一种来源称为环境灯

“键光”创建了更锐利和更具方向性的阴影,通常通过使虚拟光从屏幕顶部向下照射,在视图底部的较深和较暗的阴影中通常可见。

环境光通过使虚拟光从屏幕中央向下照射,在视图周围创建更柔和的阴影。这就是为什么您仍然会在View的顶部看到较浅的阴影的原因。这是因为不仅有从顶部发出光的光源,而且还有从屏幕中央发出光的光源。

这是光源look的图像:

但是,就光源而言,仅此而已。屏幕底部没有发光的光源,因此,将BottomNavigationView放在屏幕底部时,您只会在BottomNavigationView的顶部边缘看到非常微妙的阴影。阴影是如此微弱,几乎不存在。这被认为是正常的。

当您将BottomNavigationView移动到屏幕中央时,现在将其放置在更靠近其他两个光源的位置,因此,您将获得更明显的阴影。

Google确实警告不要故意向Views添加更深的阴影,因为这实际上会使布局看起来不自然。换句话说,它无法模仿现实中的真实阴影。因此,请勿故意在BottomNavigationView上添加更深的顶部阴影,因为考虑其他视图的自然阴影时,它看起来会很奇怪。

您可能会说您想放置一个从屏幕底部发出光芒的第3个光源,但是请不要忘记这也会对屏幕上的所有其他视图产生直接影响。试想一下,每个视图的顶部和底部都有一个较深的深色阴影……这不像当前实现那样在底部仅具有较深的深色阴影那样令人愉悦或自然。

此外,请记住,“材质设计中的阴影”是基于两个虚拟光源创建的。因此,不要以为 Elevation 是影响阴影显示方式的唯一元素。视图的大小,高程,它在屏幕上的位置以及其他因素都可能决定视图的阴影显示方式。

最重要的是,不要尝试在元素上施加阴影,因为阴影越丰富看起来越好。这可能会导致它看起来不自然,这与Material Design背道而驰,一些用户可以从中获得灵感。

相关问题