- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试向我的导航栏添加更多高度,当我使用 layout_gravity 中心上的栏更改高度时,它会像我预期的那样阴影,但是当我将其锚定到底部时,高度被覆盖或阴影被重置。
布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:elevation="48dp"
android:background="@android:color/background_light"
app:itemIconTint="@android:color/primary_text_light"
app:itemTextColor="@android:color/primary_text_light"
app:menu="@menu/navbar_menu" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
最佳答案
并不是阴影被覆盖或重置,而是Material Design对阴影的误解。
在 Material Design 中,您在更改 View 的高度时看到的阴影实际上是根据阴影在现实世界对象中的显示方式计算的。
实际上,阴影并非无处不在。相反,当有光源照射到物体时,它们就会出现。如果你看这个link ,您会看到 Google 提到 Material Design 中的阴影是由两个虚拟光源创建的。一个光源被称为Key Lights,另一个光源被称为Ambient Lights。
Key Light 创造了一个更锐利和更具方向性的阴影,通过让它的虚拟光从屏幕顶部向下照射, View 底部的更深和更暗的阴影通常会看到这种阴影。
环境光通过让虚拟光从屏幕中心向下照射,在整个 View 周围创建更柔和的阴影。这就是为什么您仍然会在 View 的顶部看到较浅的阴影。这是因为不仅有一个光源从顶部照射,而且还有一个光源从屏幕中央照射。
这是光源如何工作的图片 look :
然而,就光源而言,仅此而已。屏幕底部没有光源,所以当你的 BottomNavigationView
放在底部,你只会在 BottomNavigationView
的顶部边缘看到一个非常微妙的阴影。 .一道影子,淡淡的,几乎不存在。这被认为是正常的。
当您移动 BottomNavigationView
到屏幕中央,您现在将其放置得更靠近其他两个光源,因此,您会得到更明显的阴影。
Google 确实警告不要故意向 View 添加更深的阴影,因为这实际上会使布局看起来不自然。换句话说,它并没有模仿现实中的真实阴影。所以,不要故意尝试向 BottomNavigationView
添加更深的顶部阴影。 ,因为考虑到其他 View 的自然阴影时,它看起来会很奇怪。
您可能会争辩说您想要放置从屏幕底部发光的第三个光源,但不要忘记这也会对屏幕上的所有其他 View 产生直接影响。想象一下在每个 View 的顶部和底部都有一个更深的阴影……它不像当前的实现那样令人愉快或自然,只有底部有一个更深的阴影。
另外,请记住 Material Design 中的阴影是基于两个虚拟光源创建的。因此,不要假设 Elevation 是影响阴影显示方式的唯一元素。 View 的大小、高度、在屏幕上的位置以及可能的其他因素都可能决定阴影如何出现在 View 中。
底线是,不要试图在元素上强加阴影,因为阴影更丰富可能看起来更漂亮。它可能会导致它看起来不自然,这与 Material Design 背道而驰,一些用户可以接受这一点。
关于Android Material Component BottomNavigation 顶部阴影在放置在底部时与在中心时不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611093/
关于使用索引堆栈在选项卡之间导航以显示相关页面的问题。我这样做是为了保持页面的滚动/状态。这工作正常。我可以通过单击选项卡更改当前显示的页面 - 也可以在每个页面内导航(每个页面都用它自己的导航器包装
我正在尝试使用 BottomNavigationView 创建一个应用程序。我添加了三个 fragment 它只工作一次但是当我尝试从 botton View 应用程序崩溃中重新选择一个项目时。这是我
我试图向用户展示位于 MainActivity 中的 Snackbar RideFragment。但 BottomNavigation 与 Snackbar 重叠,因此 Snackbar 根本不可读/
我已经根据 following thread 实现了一个计数器徽章. 然后我扩展了一下,当通知计数为 0 时从导航项中删除徽章: fun setInboxIcon(count: Int) {
我正在根据 Material Design 尝试 Android 的 BottomNavigationView 实现 但是,在 MainActivity 代码中,我收到了 OnNavigationIt
项目支持RTL;尤其是阿拉伯语。 要求是所有数字都必须以英文格式出现,即使语言选择为阿拉伯语区域设置,我们在任何地方实现它的方式通常是在 TextViews 的情况下使用以下代码: TextView
在我的应用程序中,我有一个带有 BottomNavigation 的主屏幕从 Material 设计。从这些屏幕我希望能够启动其他 fragment ,其中 BottomNavigation被隐藏以便
如何制作BottomNavigation组件粘性?为什么默认情况下不具有粘性? 最佳答案 您可以使用以下 CSS 使 BottomNavigation 粘在屏幕底部: const styles = {
我使用background=ripple在BottomNavigation中制作按压效果,但在我的例子中,MyBottomNavigation颜色是深色的,因此由于波纹效果颜色是灰色的,它看起来变得不
我想在我的项目中设计这个布局: 很多人用 google 搜索 AFIAK 是一些可以在 Android 上设计的库,但我找不到它,我从 Android Material 网站截取了这个屏幕截图。谁能帮
我正在尝试向我的导航栏添加更多高度,当我使用 layout_gravity 中心上的栏更改高度时,它会像我预期的那样阴影,但是当我将其锚定到底部时,高度被覆盖或阴影被重置。 布局: 外
我正在尝试实现 Nagivation来自 Android 架构组件。我能够成功地浏览我的 fragment 。我试图将它附加到我的底部导航,但我无法正确使用它。我可以使用 Navigation.fin
我一整天都在寻找答案,但没有找到适合这个问题的任何解决方案。 我正在寻找一种方法来创建类似于 Instagram 或 PlayKiosk 应用的 BottomNavigation 用法。 fragme
我一直在四处寻找,但找不到有助于解决这个特定问题的答案。我的应用程序有一个自定义的滑入滑出效果,使用方式如下: Intent intent = new Intent(getApplicationCon
我正在尝试从 Material UI 实现 BottomNavigation 组件,但当用户使用浏览器的后退和前进按钮时遇到问题。 问题是,BottomNavigation 组件被配置为在按下导航项按
我有一个显示几个项目的 BottomNavigation,使用此代码我设法在所需的项目处启动 BottomNavigation getSupportFragmentManager().beginTra
所以我不知道如何在 RecyclerView 下的 LinearLayout 中对齐我的底部导航。这些项目是 RecyclerView:
在我的应用程序中,我想显示 CoordinatorLayout 的 BottomNavigation 底部,为此我编写了以下代码:
是否可以通过 NavigationContoller 在 BottomNavigation 控制的 Fragment 之间传递 Parcelable 对象/参数? 这是我的应用程序的流程,用户登录应用
NS 6.5已经发布,有一个新功能:动态创建选项卡和底部导航... 我按照他们的示例进行操作,但似乎不起作用,请在 Playground 上查看下面的代码: https://play.nativesc
我是一名优秀的程序员,十分优秀!