【问题标题】:Set Actionbar overlay mode at runtime in Android在Android运行时设置Actionbar覆盖模式
【发布时间】:2013-09-05 02:52:45
【问题描述】:

如何在运行时将actionbar 模式设置为不叠加或在运行时与内容叠加?我尝试使用getWindow().requestFeature(Window.FEATURE_ACTIONBAR_OVERLAY),但它不允许在调用setContentView() 后设置模式。这可以做到,正如我在 Youtube 应用中看到的那样。

【问题讨论】:

  • 嗨,Sowrabh,您找到解决方案了吗?
  • 运气不好@Wayne。我能做的最好的是将操作栏覆盖模式始终设置为Window.FEATURE_ACTIONBAR_OVERLAY,然后在需要时将整个视图的 Y 坐标设置为操作栏的底部。虽然不是一个非常干净的解决方案
  • 哦,谢谢,这可能是一种解决方法:D。但是,如果我们知道 Youtube 是如何做到的,那就太好了:D
  • 我很确定 YouTube 是在假装我们,并且在“全屏”视频中,他们有一个假的 ActionBar(完全根据我所看到的猜测)。在您的手机上,如果您进入横向并最小化视频,然后慢慢将视频拖到全屏,当它的顶部碰到操作栏时,操作栏会隐藏/动画起来。

标签: android android-actionbar android-4.0-ice-cream-sandwich


【解决方案1】:

虽然不一定完全符合您的要求,但一种体面的解决方法是在内容顶部创建一个与 ActionBar 高度相同的间隔视图 (android:layout_height="?android:actionBarSize") .当你想要启用覆盖模式时,将间隔的可见性设置为 View.GONE,当你想要禁用它时,将其设置为 View.VISIBLE。

【讨论】:

  • 这绝对是一个有效的解决方法。 ActionBar 的覆盖性是一种样式,必须在显示之前设置它们并且在运行时不会更改,因此似乎需要解决方法。解决此问题的一个问题是,获取操作栏的高度并不像答案中所说的那么简单,您必须在它可见后getActionBar().getHeight(),因为“堆叠”操作栏(想想手机上的操作栏标签纵向)不包含在 android:actionBarSize 中,因为我们不知道 Android 用来决定是否显示堆叠的所有变量:(
猜你喜欢
  • 2011-06-02
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2021-10-04
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
相关资源
最近更新 更多