如何使上下文操作栏覆盖我的布局而不是“推”它向下

43

我为我的应用程序实现了自己的viewgroup。由于各种原因,使用操作栏不是一个选择,因此在我的viewgroup中,我有自己的“actionbars”,一个在顶部,一个在底部。图1说明了我的当前布局。

图片1

如您所见,布局中有两个编辑框,并且一切看起来都很好。

然而,当用户选定任何一个编辑框中的文本时,上下文操作模式栏会显示。 图2说明了这一点。

图片2

当发生这种情况时,操作模式栏会“推”下我的整个布局以获得其空间。 在平板电脑和其他大屏幕设备上,这是可以接受的,但在较小的设备上,特别是在软键盘可见时,剩余的高度太小了(在横向方向上是无用的)。

我想做的是让操作模式栏覆盖我的布局,而不是像图3所示那样将其向下推。

图片3

是否可能实现这一点?

3个回答

57

只需在您的样式中添加<item name="android:windowActionModeOverlay">true</item>即可。


2
哦。我的天啊。这个问题属于“怎么可能会错过呢?”类型。非常好用,非常感谢!!! - ChD Computers
17
没用,我正在使用"Theme.AppCompat.Light.NoActionBar"和工具栏。 - user987760
我有同样的问题,但这个答案没有帮助到我。我有一个ListView,当用户选择一个项目时,我会显示 CAB(上下文操作栏)。所以如果我选择列表中的第一个项目,CAB 就会显示,并且该项目的复选框被选中,但视图被推上去了。列表的最后一页将可见,我必须向上滚动才能看到所选的第一个项目。进一步选择项目不会推动视图,因为 CAB 已经存在。 - png
8
伙计们,对我也没用,直到我注意到我在 API 23 上测试并且我将那个<item>设置在 values 而不是 values-21 中... - Mino
15
如果与AppCompatActivity一起使用,则应使用<item name="windowActionModeOverlay">true</item>(不带android:前缀)。 - don't panic
显示剩余2条评论

38
要在appcompat工具栏中使用windowActionModeOverlay,请使用以下方法:
<item name="windowActionModeOverlay">true</item>  

根据你的风格。


2
也许这应该成为被接受的答案,而不是我在2013年发布原始答案时,AppCompat甚至还不存在。 - marijnvdwerf

3
这也可以通过编程方式实现,使用以下方法:
 getWindow().requestFeature(Window.FEATURE_ACTION_MODE_OVERLAY);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接