【问题标题】:Correct way to change Collapseable Toolbar title更改可折叠工具栏标题的正确方法
【发布时间】:2015-07-08 19:37:05
【问题描述】:

当我更改折叠的 collapsingToolbar 的标题时,标题不会改变。

我尝试过 getSupportActionBar.setTitle 和 collapseToolbar.setTitle,但没有帮助。告诉我,有什么问题?

【问题讨论】:

标签: java android android-toolbar


【解决方案1】:

我相信this 问题描述了您所遇到的情况。我也遇到了这个问题,今天解决了。本质上,处理折叠文本的代码仅在当前文本为空或文本大小更改时更新文本。目前这是一个已关闭的错误,补丁计划在设计库的未来版本中发布。现在使用我的解决方法,即仅更改文本的大小,然后再将其更改回来。

这就是我所拥有的

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>

编辑:下面的代码来自 collapsingtext 帮助器,用于在折叠工具栏布局内控制该视图的文本。

        if(availableWidth > 0.0F) {
            updateDrawText = this.mCurrentTextSize != newTextSize;
            this.mCurrentTextSize = newTextSize;
        }

        if(this.mTextToDraw == null || updateDrawText) {
            this.mTextPaint.setTextSize(this.mCurrentTextSize);
            CharSequence title = TextUtils.ellipsize(this.mText, this.mTextPaint, availableWidth, TruncateAt.END);
            if(this.mTextToDraw == null || !this.mTextToDraw.equals(title)) {
                this.mTextToDraw = title;
            }

            this.mTextWidth = this.mTextPaint.measureText(this.mTextToDraw, 0, this.mTextToDraw.length());
        }

违规行是updateDrawText = this.mCurrentTextSize != newTextSize;,它设置布尔值来确定我们是否更改此行中的文本if(this.mTextToDraw == null || updateDrawText) { 因此,当折叠工具栏布局重新计算其视图时,设置文本的决定因素是文本大小。如果您没有更改文本大小,那么您的折叠工具栏布局标题将不会更改,直到它从折叠位置折叠或展开

【讨论】:

    【解决方案2】:

    定义你的风格,如:

    <style name="CollapsedAppBarTopic" parent="@android:style/TextAppearance.Medium">
        <item name="android:textSize">20sp</item>
        <item name="android:textStyle">normal</item>
    </style>
    

    然后在你的xml中:

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/cardview_collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        android:fitsSystemWindows="false"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginEnd="48dp"
        app:expandedTitleMarginStart="16dp"
        app:expandedTitleMarginBottom="16dp"
        app:expandedTitleTextAppearance="@style/CollapsedAppBarTopic"
        >
    

    【讨论】:

    • 是的!这就是我要找的。使标题自定义大小。我们也可以自定义标题的边距。非常感谢。
    • R Besar,如果有用,请不要忘记回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2016-12-11
    • 2018-07-16
    • 2016-10-01
    相关资源
    最近更新 更多