如何在CollapsingToolbarLayout中展开的标题上实现多行显示?

35

我的问题是这样的。我想将相对较大的文本作为CollapsingToolbarLayout标题,并将其显示为多行模式。当我尝试通过setExpandedTitleTextAppearance()方法更改文本外观时,它不起作用。我使用的代码如下所示:

<style name="ToolbarExpandedTitle">
    <item name="android:textSize">48sp</item>
    <item name="android:shadowColor">#ffffff</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:singleLine">false</item>
    <item name="android:minLines">3</item>
    <item name="android:lines">4</item>
    <item name="android:maxLines">5</item>
</style>

enter image description here

我希望标题显示在多行,而不是显示省略号。


解决了吗?我想知道答案,谢谢。 - Skizo-ozᴉʞS ツ
5个回答

23

随着新的Material Design 1.2.0-alpha05版本的发布,这个功能被实现为本地函数。

使用1.2.0-alpha05及以上版本的材料库实现:

implementation 'com.google.android.material:material:1.2.0-alpha05'
将此行添加到Collapsing Toolbar Layout的XML中(此示例我将最大行数设置为2)。
app:maxLines="2"

或者您可以通过编程来设置它

 collapsingtoolbar.setMaxLines(2);

5
我注意到如果将 app:maxLines="2" 设置为2,那么 expandedTitleGravity 属性似乎不再起作用了,我无法将文本居中。 - Nijat Ahmadli

18

请查看这个库multiline-collapsingtoolbar

multiline-collapsingtoolbar是Android Design Support Library中CollapsingToolbarLayout的替代品,可以处理展开状态下多行标题(目前最多为3行)。在折叠工具栏时,标题的下方几行会逐渐消失,只留下顶部一行可见。

与Design Support Library一样,它应该兼容API 7(Android 2.1)及以上版本。


2
第二个选项没有提供任何帮助... 你能否更新你的答案? - Minas Mina
@MinasMina 那样做有时可以,但并非所有情况都适用。 - Amit Vaghela

5

目前似乎不支持此功能。一个可能的解决方法是使用自己的视图,并在展开时隐藏工具栏标题。实现此方法的一种方式在这里:

https://dev59.com/m10Z5IYBdhLWcg3wrB2H#31529101

希望将来的Support Library版本会添加此功能。


4
一个更简单的方法是添加一个自定义布局到CollapsingToolbar并将其固定在顶部。
需要注意以下几点:
  • 工具栏的高度应该与折叠内容的高度相同,可以通过代码或XML实现。
  • 要隐藏的元素必须在布局XML文件中的工具栏定义之前。
  • 要保持可见的元素必须在布局XML文件中的工具栏定义之后。
点击这里查看完整代码。最终效果如下图所示:Multiline toolbar

4

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