将操作栏更改为从 Fragment 内覆盖

2023-11-21

我有一个片段(片段 1),它被另一个片段(片段 2)替换。片段 1 被放置在堆栈上。我正在使用兼容模式(不是 ActionBarSherlock)。

这是我的问题。我希望操作栏在某些片段中显示为叠加,但在其他片段中则不然。具体来说,当显示片段 2 时,我希望它出现在叠加层中,然后在片段 2 退出后返回到正常操作栏。

片段 1 有一个始终可见的常规操作栏。但是,当我用片段 2 替换片段 1 时,我需要在 5 秒后隐藏操作栏。如果有触摸事件,操作栏将再次显示。这一切都工作正常,但是,每次隐藏或显示操作栏时,都会重新绘制片段 2。因此,我想让 Fragment 2 中的操作栏显示为叠加层。

我知道我可以更改操作栏覆盖,但我不知道如何从片段内以编程方式执行此操作。我不想更改每个片段,只想更改片段 2。

想法????


这可能不是您所希望的答案。

考虑一个不同的问题:我们可以在之后更改活动主题吗?setContentView(...)已被调用?这个问题已经被问过很多次了,一个常见的解决方案是重新创建(调用finish() and startActivity(getIntent())) 活动并在之前设置新主题setContentView(...).

您的问题是对此的扩展 - 增加了从片段更改主题的复杂性。无论如何,我不认为上面提到的解决方案是好的。

ActionBar 是创建 Activity 时最先初始化的组件之一。我认为您不会找到一种方法来用新属性来“刷新”它。请参阅下面如何requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)方法处理 post-setContentView(...) 调用:

@Override
public boolean requestFeature(int featureId) {
    if (mContentParent != null) {
        throw new AndroidRuntimeException("requestFeature() must be 
                                                       called before adding content");
    }
    ....
    ....
}

So, if setContentView(...)已经为 Activity 调用了(在您的情况下),将抛出运行时异常。

有可能您甚至不需要此功能吗?

首先将 ActionBar 设置为主题中的覆盖层:

<item name="android:windowActionBarOverlay">true</item>
<!-- Support library attribute for compatibility -->
<item name="windowActionBarOverlay">true</item>

这是我的问题。我希望操作栏在某些片段中显示为叠加...

好的。我们已经在上面对此进行了规定。

...但其他人则不然。

假设您不希望 ActionBar 作为片段 B 中的叠加层。然后,在片段 B 的布局中,执行以下操作:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?android:attr/actionBarSize" >  <<<-- ?attr/actionBarSize
                                                                    for compatibility

    ....
    ....
</LinearLayout>

将上边距设置为 ActionBar 的大小后,片段 B 看起来就像有一个常规的 ActionBar - 而不是一个重叠的 ActionBar。实现这一目标的另一种方法是View with android:layout_height="?android:attr/actionBarSize"放置为上面布局中的第一个子项。

在本质上:

  • 你的 ActionBar 将是一个覆盖层。
  • 在 ActionBar 将自动隐藏的片段中,片段布局will not有任何上边距设置。
  • 在 ActionBar 不应重叠的片段中,片段布局will将上边距设置为actionBarSize.

值得注意的一点(感谢Jelle):

If your ActionBar是半透明的,最好使用填充而不是边距以获得一致的外观。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将操作栏更改为从 Fragment 内覆盖 的相关文章

  • 检查 WebView 元素时的 UiAutomator 错误

    I have recently started automation testing in android and was using UiAutomator tool for inspecting UI elements Surprisi
  • 如何使用导航组件在单一活动设计中使用偏好?

    我想使用导航组件迁移到单一活动设计 我正在使用一项活动 其他活动是片段 对于某些屏幕 我只有布局 没有偏好 使碎片膨胀没有问题 但当我尝试按偏好工作时 我遇到了问题 我的要求是 我需要在片段中膨胀工具栏和首选项列表 我的做法 使用以下代码添
  • 如何自定义菜单项的背景颜色?

    我正在尝试定制Toolbar的弹出菜单 现在我无法设置菜单项的背景颜色 我的 styles xml 如下所示
  • Xamarin Android Webview Javascript

    我正在尝试通过 Xamarin for Android 创建一个移动应用程序 它有一个显示网站的 WebView 问题是正常按钮会触发 但 javascript 事件不会触发 我已经启用了 Javascript 但没有运气 如何在 Andr
  • Android Studio:XML 布局中的“包装在容器中”

    编辑 XML 布局文件时 Eclipse 有一项称为 包裹在容器中 的功能 重新格式化 gt Android gt 可让您选择一个或多个视图并在其周围包裹您选择的布局 Android Studio中有类似的东西吗 目前正在实施中 问题 69
  • fetchUuidsWithSdp 的奇怪 UUID 逆转

    我有一个在树莓派上运行的 python 蓝牙服务器 使用 PyBluez 我在服务器中使用的uuid是 8f86d132 4ab8 4c15 b8df 0b70cf10ea56 我正在打电话device fetchUuidsWithSdp
  • Recyclerview 动态部分不使用任何第三个库

    我想将标头添加到 recyclerview 我正在尝试使用来实现它 Override public int getItemViewType int position depends on your problem if position 0
  • Dialog.setTitle 不显示标题

    我正在尝试向我的对话框添加自定义标题 但是每当我运行我的应用程序时 它都不会显示标题 我创建对话框的代码是 final Dialog passwordDialog new Dialog this passwordDialog setCont
  • 当它的父级是 ConstraintLayout 时设计 CardView 吗?

    我在编辑包含Relativelayout的Cardview内的RelativeLayout时搞砸了 ConstraintLayout会将相对布局的wrap content更改为0并添加工具 layout editor absoluteX 1
  • Android Eclipse 上的 Web 服务

    我是 android eclipse java 的新手 事实上这个论坛也是如此 有人遇到过这种情况吗 从用户那里获取输入并通过使用 android eclipse 中的 Web 服务来显示适当的结果 有可用的示例吗 非常感谢 我正在发布教程
  • Android Studio 与本地网络共享上的项目文件

    这是我的设置 Android Studio 项目文件位于 Ubuntu 14 10 盒子上的共享文件夹中 尝试在 Windows 8 机器上运行 Android Studio 1 0 2 并将 U 驱动器映射到包含项目文件的 Ubuntu
  • Android - AudioRecord类不读取数据,audioData和fftArray返回零

    我是 Android 新手 一直在开发音调分析器应用程序 最低 SDK 8 我读了很多关于如何实现 Audiorecord 类的文章 但我想知道为什么它在我录制时不读取任何数据 我尝试显示 audioData 和 fftArray 的值 但
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • 我应该释放或重置 MediaPlayer 吗?

    我有自己的自定义适配器类 称为 WordAdapter 并且我正在使用媒体播放器 名为pronounce WordAdapter 类中的全局变量 我有不同的活动 其中每个列表项都有线性布局 名为linearLayout 我正在设置onCli
  • 您使用什么物理 Android 设备进行测试?

    有什么好的推荐用于测试目的的物理 Android 设备吗 我正在苹果阵营寻找像 iPod touch 这样的设备 可以帮助 iOS 开发人员测试他们的东西 我知道有 Nexus One 但那东西相当昂贵 而且我并不真正关心手机的东西 而是可
  • Android Studio 缓慢的增量构建

    我已经完成了许多步骤来完善我们的构建系统 those https stackoverflow com questions 16775197 building and running app via gradle and android st
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • Android 屏幕方向错误

    我使用的是 Android HTC HERO 2 1 版本 我写的活动

随机推荐

  • 使用指针和比较器 C++ 的优先级队列

    我刚刚开始学习C 有一半的时间我不知道我在做什么 花几个小时在Google上搜索并盲目地将代码放入我的项目中 这可能是一个基本问题 但我似乎做不到把它做好 这是要求对于我的任务 我需要这些 在边缘类中 public bool operato
  • 如何将 Cocoa 应用程序设置为默认 Web 浏览器?

    如何将 Cocoa 应用程序设置为默认 Web 浏览器 我想创建一个当用户单击其他应用程序 邮件 iChat 等 中的 HTTP 或 HTTPS 链接时默认启动的应用程序 制作可充当默认网络浏览器的应用程序有四个步骤 前三个步骤允许您的应用
  • 如何将 Google 地图库与 Flutter Web 结合使用? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在将一个 flutter 移动项目移植到 flutter web 并且想知道如何将 google 地图库与 Flutter Web 一起使用 请
  • 如何使用 javascript 从字符串中删除 `//` ?

    如何去除 使用来自字符串的javascript var title 需要成为 var title A Survey of Applications of Identity Based Cryptography in Mobile Ad Ho
  • 有没有更好的方法来确定 UITableViewCell 的正确大小?

    我有一个 UITableView 单元格 该单元格的大小将根据其内容 可能是几行文本 而变化 既然看起来 heightForRowAtIndexPath 被调用before我布局单元格 我只是通过在文本字符串上调用 NSString siz
  • 如何使用不同的tsconfig文件进行测试?

    在我的项目中我使用 2 个不同的 tsconfig 文件 tsconfig json tsconfig specs json 供测试用 我如何告诉 Intellij Idea 两者都使用 即在Settings Langauges Frame
  • PHP REST 下载文件

    我有一个具有这样功能的网络服务 app gt get downloadPdf function use app log example pdf res app gt response res Content Description File
  • 如何确定Apple Watch型号?

    The WKInterfaceDevice current model属性没有给出型号 对于 Apple Watch 该字符串的值为苹果手表 如何从 iOS 确定确切的 Apple Watch 型号 只是稍微更新了 Mathieu Vand
  • 在 SQL 中,如何将位掩码总计中的值拆分为逗号分隔的字符串

    我有一个位掩码值作为 int 存储在 sql 中 我想将该值转换为位掩码值中包含的值的逗号分隔列表 例如 结果可能如下所示 id name bitMaskValue values 1 Bob 5 1 4 2 Mary 13 1 4 8 3
  • 如何更改 Xamarin 表单导航页面中的背景颜色

    我正在尝试更改 navigationPage 中 navigationBar 的背景颜色我正在使用以下代码 using System using System using Xamarin Forms using System Collect
  • 要列出的 Pandas DataFrame 列[重复]

    这个问题在这里已经有答案了 我根据另一列中满足的条件从一列中提取数据子集 我可以得到正确的值 但它在 pandas core frame DataFrame 中 我如何将其转换为列表 import pandas as pd tst pd r
  • 从 android 将 JSONArray 发布到 WCF 服务

    我在将 JSONArray 值发布到我的 WCF 服务时遇到问题 当我从 Fiddler 或 Net Test Client 发布数据时 它工作正常 每次我尝试从我的 Android 应用程序发布时 我都会收到请求错误 这是我从 Andro
  • 如何在 MySQL 中正确使用 CASE..WHEN

    这是一个演示查询 注意它非常简单 仅在 base price 为 0 的情况下获取 但它仍然选择条件 3 SELECT CASE course enrollment settings base price WHEN course enrol
  • 如何在共享主机上安装 Composer?

    我有这些东西 文件http api odtu lu composer phar http api odtu lu phpinfo php FTP 访问 cPanel FreeBSD 上的 Cron 作业 PHP Perl CGI BIN P
  • Python 相当于 Ruby 的 .select

    我有一个列表 数组 我们称之为x 我想创建一个新的列表 数组 我们称之为这个z 从元素中x符合某种条件 在 Ruby 中 您可以通过调用列表 数组上的 select 方法来做到这一点 如下所示 x 1 2 3 4 5 6 7 8 9 10
  • 延迟加载单例:双重检查锁定与按需初始化持有者习惯用法

    我需要在并发环境中延迟加载资源 加载资源的代码应该只执行一次 Both 双重检查锁定 使用 JRE 5 和 volatile 关键字 和按需初始化持有者习惯用法似乎很适合这份工作 仅通过查看代码 按需初始化持有者习惯用法似乎更干净 更高效
  • Android onTouch 与 onClick 和 onLongClick

    我有一个自定义视图 其作用类似于按钮 我想在用户按下它时更改背景 当用户将手指移到外面或释放它时将背景恢复为原始状态 我还想处理 onClick onLongClick 事件 问题是 onTouch 要求我返回 trueACTION DOW
  • asp.net 5 mvc 6 loginUrl更改路径

    在 VS 2015 WebApplication 中创建新项目时 如果未授权 您将如何更改重定向登录 URL 路径 我创建了一个新区域 在其中创建了一个登录控制器 此登录控制器要求您获得授权 但是当尝试访问这些页面时 我被重定向到 Acco
  • UIViewContentMode模式指的是什么类型的内容?

    根据 UIView 的官方文档contentMode财产 The content mode specifies how the cached bitmap of the view s layer is adjusted when the v
  • 将操作栏更改为从 Fragment 内覆盖

    我有一个片段 片段 1 它被另一个片段 片段 2 替换 片段 1 被放置在堆栈上 我正在使用兼容模式 不是 ActionBarSherlock 这是我的问题 我希望操作栏在某些片段中显示为叠加 但在其他片段中则不然 具体来说 当显示片段 2