使用新的设计库,我们应该在CollapsingToolbarLayout
,不是Toolbar
本身(至少在使用折叠工具栏时)。但setTitle()
仅在以下特定情况下更新标题:
-
当。。。的时候CollapsingToolbarLayout
还没有标题
-
此刻CollapsingToolbarLayout
变得完全塌陷
-
此刻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(使用前将#替换为@)