CollapsingToolbarLayout setTitle() 不会更新,除非折叠

2024-05-08

使用新的设计库,我们应该在CollapsingToolbarLayout,不是Toolbar本身(至少在使用折叠工具栏时)。但setTitle()仅在以下特定情况下更新标题:

  1. 当。。。的时候CollapsingToolbarLayout还没有标题

  2. 此刻CollapsingToolbarLayout变得完全塌陷

  3. 此刻CollapsingToolbarLayout开始扩大

我实际上想做的是让标题成为EditText当完全展开时,允许用户给他/她的角色命名,然后显示为标题。我试图通过打电话来强制解决这个问题invalidate() or requestLayout(),以及这两种方法CollapsingToolbarLayout的孩子们。没有效果。


编辑:不再需要此解决方案。错误已修复v22.2.1 https://code.google.com/p/android/issues/detail?id=175808#c8

我不想只留下链接,所以这是完整的解决方案。

出现该错误的原因是,如果当前标题为空或文本大小已更改,则处理可折叠标题的代码仅更新实际标题。解决方法是更改​​标题文本大小,然后再改回来。我使用了 0.5 sp,所以没有太大的跳跃。更改文本大小会强制更新文本,并且不会出现闪烁。只是文字大小略有变化。

这就是我所拥有的

private void setCollapsingToolbarLayoutTitle(String title) {
    mCollapsingToolbarLayout.setTitle(title);
    mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBar);
    mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar);
    mCollapsingToolbarLayout.setExpandedTitleTextAppearance(R.style.ExpandedAppBarPlus1);
    mCollapsingToolbarLayout.setCollapsedTitleTextAppearance(R.style.CollapsedAppBarPlus1);
}

在 styles.xml 我有

<style name="ExpandedAppBar" parent="@android:style/TextAppearance.Medium">
    <item name="android:textSize">28sp</item>
    <item name="android:textColor">#000</item>
    <item name="android:textStyle">bold</item>
</style>

<style name="CollapsedAppBar" parent="@android:style/TextAppearance.Medium">
    <item name="android:textSize">24sp</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textStyle">normal</item>
</style>

<style name="ExpandedAppBarPlus1" parent="@android:style/TextAppearance.Medium">
    <item name="android:textSize">28.5sp</item>
    <item name="android:textColor">#000</item>
    <item name="android:textStyle">bold</item>
</style>

<style name="CollapsedAppBarPlus1" parent="@android:style/TextAppearance.Medium">
    <item name="android:textSize">24.5sp</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textStyle">normal</item>
</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CollapsingToolbarLayout setTitle() 不会更新,除非折叠 的相关文章

随机推荐

  • 如何在 HERE API 中获取速度限制

    我正在开发一个网络应用程序 我需要知道特定道路的速度限制 对 API 的调用看起来是这样的 get http cre api here com 2 calculateroute json waypoint0 41 69758 87 7839
  • PHP memcache - 检查池中是否有可用的服务器?

    我有以下代码 cluster local array host gt 192 168 1 1 port gt 11211 weight gt 50 cluster local2 array host gt 192 168 1 2 port
  • 在 Excel 2010 中添加基本功能区的 VBA 代码?

    我已经使用产品在 C addin express 中为 Excel 编写功能区 但我需要知道如何使用 vba 生成功能区 有人能为我提供一些代码来为此在工具栏中插入一个额外的功能区吗 我所说的功能区是指上面写着 公式 数据 评论 等的地方
  • Kestrel + IIS 反向代理请求中止未触发

    我们有一个 ASP NET Core 2 x 应用程序 它实现了自定义中间件 充当另一个 基于 Java 的 服务器 应用程序前面的代理 此应用程序 中间件的客户端通常会在服务器请求完成之前频繁中止 取消其请求 我们已将此应用程序部署到 I
  • 能否从 Vista Shell 获取 48x48 或 64x64 图标?

    如果 Vista Shell 中存在 48x48 或 64x64 图标 如何使用 SHGetFileInfo 获取在 TImage 中显示图标的句柄 我想从图像列表中选择一个代表文件夹路径的图标 并在 Timage 中显示 48x48 或
  • 位置:固定在 iPad 和 iPhone 上不起作用

    I have been struggling with fixed positioning in iPad for a while I know iScroll http cubiq org iscroll and it does not
  • 如何在 Angular 6 中包含外部 html 文件和 js 文件?

    我想在我的 Angular 6 项目中包含一些 html 文件并使用一些外部 js 文件中的函数 如何在 Angular 6 中包含外部 html 文件和 js 文件 您可以将这些文件放在src assets文件夹并指定路径angular
  • 如何在 Eclipse 中的独立(Swing)应用程序中配置 hibernate?

    我通常在Web应用程序中使用hibernate和spring 所以我使用DI和maven进行配置 现在我想在不使用maven或spring的桌面 swing应用程序中使用hibernate 我想知道以下内容 我需要什么罐子 如何配置休眠 以
  • Django - 使用 get_FOO_display 进行聚合

    考虑以下 status queryset values status annotate count Count status where status字段是一个CharField with choices 这将产生一个字典列表statusD
  • ModuleNotFoundError:没有名为“模型”的模块

    我有一个非常简单的 django 应用程序 我试图将其部署到 heroku 但它不断崩溃 在我的本地机器上一切正常 但在 Heroku 上却不行 这是我收到的错误 切到相关部分 File app hello admin py line 4
  • React Native 循环这个

    当我把onPress在地图循环中 它不起作用 如何修复它 var PageOne React createClass handlePress this props navigator push id 2 render return
  • 将值数组附加到 React JS 中某个状态的当前数组

    我的状态值为 this state emp id 1 name A id 2 name B id 3 name B 我怎样才能添加一个像这样的数组var arr id 4 name D 给国家emp而不删除数组的当前值 我只想将新的值数组附
  • TryXXX 类似带有“out”参数的方法与返回可为空值类型的方法?

    我经常在 C 中看到这样的方法 进行可能会或可能不会给出结果的计算 bool TrySomething SomeType inputData out SomeOtherType result 为什么人们不使用这样的东西呢 Nullable
  • HashMap 无法转换为 java.lang.string

    我正在尝试从列表视图中获取值 列表视图由hashmap类型的数组列表设置 因此 如果我尝试获取字符串中的值 则会出现错误HashMap cannot be cast to java lang string 详细信息1 java packag
  • 不使用修剪方法从字符串中删除空格?

    给定的字符串是 家 甜蜜的家 如果用户输入模式为 0 那么 o p 应该是 home sweet home 如果用户输入模式为 1 那么 o p 应该是 Do this https stackoverflow com questions 5
  • Android Gradle 构建缓慢

    我试图找出为什么我们的 Gradle 构建如此缓慢 目前 每次您在不进行任何更改的情况下进行构建时 构建时间约为 45 秒 这是一个单模块项目 我已经打开了分析 大部分时间都花在了 app dexDebug 我们使用 Gradle 2 8
  • 如何在Python中连接两个整数?

    如何在Python中连接两个整数 例如 给定10 and 20 我想要一个返回值1020 将两者都转换为字符串 连接字符串 然后将结果转换回整数 z int str x str y
  • 从开放的 HTTP 流中读取数据

    我正在尝试使用 NET WebRequest WebResponse 类来访问 Twitter 流 API 此处 http stream twitter com spritzer json 我需要能够打开连接并从打开的连接中增量读取数据 目
  • PHP文件上传错误tmp_name为空

    我的文件上传遇到这个问题 我尝试在检查验证时上传 PDF 文件TMP NAME是空的 当我检查时 FILES document attach error 该值为 1 意味着存在错误 但当我尝试上传其他 PDF 文件时 它已成功上传 为什么其
  • CollapsingToolbarLayout setTitle() 不会更新,除非折叠

    使用新的设计库 我们应该在CollapsingToolbarLayout 不是Toolbar本身 至少在使用折叠工具栏时 但setTitle 仅在以下特定情况下更新标题 当 的时候CollapsingToolbarLayout还没有标题 此