问题标签 [windowinsets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 什么是 WindowInsets?
我正在尝试了解 Android 操作系统,在阅读 Google I/O 2014 应用程序时,我遇到了WindowInsets
. 如果有人能解释他们是什么,那将是一个很大的帮助。谢谢你。
android - 适合SystemWindows on Fragment、Activity和DrawerLayout组合
问题
活动布局有DrawerLayout
一个FrameLayout
作为内容到Fragment
和一个LinearLayout
由抽屉打开和关闭。用于内容的片段有一个FrameLayout
withfitsSystemWindows
标志和一个Toolbar
.
onCreate()
如果我按预期插入片段,则从FrameLayout
位置 0Toolbar
开始,在状态栏下方开始。但在onCreate()
相同的代码之外失败,fitsSystemWindows
不适用于FrameLayout
.
重要的一点,我需要Toolbar
andfitsSystemWindows
标记 onFragment
而不是 on Activity
。
如何获得相同的行为onCreate()
?
代码
主要活动
主要布局
分段
片段布局:
例子
LinearLayout
要打开的为红色。FrameLayout
标志为绿色,fitsSystemWindows
工具栏为蓝色,青色视图一直在工作,它需要从 y 位置 0 开始。预期第一次是绿色和蓝色,但第二次是蓝色独特的观看。
android - 确定没有导航栏和状态栏的内容区域
Android 应用程序使用全屏显示导航栏、状态栏和工具栏后面的内容。我想要一些不在这些栏后面的内容。如何确定没有这些条的区域?据我了解,某些条的位置取决于设备。
android - 内容位于 api 21 及更高版本的软导航栏后面
已升级应用以使用 Material Design - Theme.AppCompat.Light.NoActionBar、Toolbar而不是ActionBar等。
并且有问题。在 APi >= 21 的设备上,底部内容将隐藏在软导航栏下(见下图)
已找到解决此问题的解决方案:
在values-v21/styles.xml
如果选项<item name="android:windowDrawsSystemBarBackgrounds">false</item>
- 底部内容可见,但状态栏变为全黑。我无法将颜色更改为colorPrimaryDark(在我的情况下为绿色)
如果选项<item name="android:windowDrawsSystemBarBackgrounds">true</item>
- 底部内容不可见,并且状态栏为绿色,如预期的那样。
我想要状态栏颜色(绿色)和可见的底部内容。可能是工具栏的问题。它会降低内容吗?
有什么建议么?
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
更新:
正如@azizbekian 所建议的那样,我已将片段容器替换为 CoordinatorLayout(在 FrameLayout 之前)并应用android:fitsSystemWindows="true"
在这种情况下,底部面板可见,但不在底部.. 目标是保持按钮在底部......
画面布局:
这是结果:
更新#2
活动布局:
替换LinearLayour
为CoordinatorLayout
作为活动的根。作为我保留的内容的根元素FrameLayout
。应用于. android:fitsSystemWindows="true"
_ CoordinatorLayout
这样,所有内容都略微向上移动,部分内容位于工具栏下方(您可以在下图中看到 - 顶部元素是带有 + 和 - 符号的圆圈。但在之前的图像中,顶部有文本。)关于底部元素(按钮面板) - 仍然位于导航栏下方,但也略微向上移动。我已标记android:background="@color/red"
为更容易识别此面板的位置。
看来,我们走在正确的道路上。我们所需要的 - 解决问题 - 为什么内容移动到工具栏下方.. 如果 tolbar 将是顶部 ui 元素,按钮将可见..
android - 嵌套坐标布局和fitsSystemWindows重叠状态栏
以下是我的主要活动的 xml
以下是Home 片段的 xml 代码
以下是Detail 片段的 xml 代码
现在,当我从Home Fragment调用Detail Fragment 时,我的工具栏与状态栏重叠。如果我从任何其他片段中调用Detail 片段,它看起来很好。尽管Home 片段和Detail 片段的 xml 几乎相同,但 Home 片段中的工具栏也不与状态栏重叠。
图一为细节片段正常打开时
图二从首页打开详情片段
最新更新: 此解决方案正在帮助我https://medium.com/google-developers/windows-insets-fragment-transitions-9024b239a436但有很多更改涉及任何其他快捷方式吗?
android - 动态更改状态栏颜色而不丢失透明度
我知道我可以colorPrimary
用来确定 的颜色Toolbar
,并colorPrimaryDark
确定状态栏的颜色。
我正在使用以下主题
有趣的属性之一是,当我滑出导航菜单时,状态栏会自动变为透明。
在运行时,有时我想更改状态栏的颜色。
它看起来如下
setStatusBarColor
不幸的是,当我们滑出导航菜单时,调用, 也会丢失状态栏的透明度属性。
我可以知道,如何在运行时更改状态栏颜色,而不会丢失其透明度属性?就我而言,在运行时将状态栏更改为蓝色后,当我滑出导航抽屉时,我希望看到状态栏透明度属性被保留。
更新
我试过
当导航抽屉滑出时,提供透明度属性无济于事。
android - 带有片段共享元素转换的 WindowInset
我正在尝试向我的片段添加一个共享元素转换,这将在顶部创建一个居中徽标之类的东西。我通过共享元素转换成功地做到了这一点,但徽标也应用了一些窗口插图。问题在于只有在共享元素转换完成后才会应用窗口插图。这使得视图看起来像跳转到它们的最终位置。
我正在使用下面的代码。
有人可以帮我吗?
如何在执行共享元素转换之前先应用窗口插图,以免发生“跳跃”?
android - 如何在 ViewPager 的片段页面上应用 fitSystemWindows?
我无法让我的 ViewPager 页面尊重状态栏高度。我的 ViewPager 有几个页面,其中一个页面上有一个图像需要放在半透明状态栏下。其余的页面只需要一个彩色状态栏,所以我的想法是在片段布局上使用 fitSystemWindows="true" 作为 viewpager 的页面。但这不起作用。似乎在第一次绘制时,只有第二页应用了填充。但是当滚动页面时。它消失了。所以在我看来,页面没有从 ViewPager 获得调度来应用插图。但我不知道如何实现它。
我试图用 做一些事情
public static void setOnApplyWindowInsetsListener(View v, OnApplyWindowInsetsListener listener)
,但我无法开始工作。我的想法是以某种方式在每个新页面上应用插图。也许这是正确的方法,但我找不到调用此方法的正确位置。
那么有没有人可以帮助我解决这个问题?我将在下面放置一些代码,以提供有关该问题的一些上下文。
活动.xml
这是一个自定义布局管理器,用于支持更改片段(片段转换)并再次应用 windowInset。仅供参考,这是代码:
然后在某个时间点,我将以下片段加载到 fragment_container。
fragmentWithViewpager.xml
其中 ViewPagerController 是 ViewPager、TabLayout(用于 ViewPager 的页面指示)和一些我在下面的布局中省略的按钮的持有者。
ViewPagerController
最后,ViewPager 的大部分页面都有这样的布局:
android - Android 透明状态栏和自定义视图插图
我想在透明状态栏后面绘制我的布局。我正在使用指挥的控制器来实现我的应用程序的屏幕,它们都有白色的状态栏,但需要它是完全透明的。进入此控制器时我不能使用 windowTranslucentStatus 标志,因为它会导致我的布局在控制器进入并存在屏幕时稍微跳跃。我认为自定义窗口插图可以帮助在状态栏后面绘制一个控制器而不会发生布局跳跃,但我不知道如何做到这一点。有人可以帮我吗?