仅在折叠时显示CollapsingToolbarLayout标题

Pse*_*328 137 android android-collapsingtoolbarlayout

标题说明了一切.我试过setExpandedTitleColorsetCollapsedTitleColor(开关,并从透明的),没有运气.我也看不到任何内置的方法可以做我正在寻找的东西.

我只想在CollapsingToolbarLayout完全折叠时显示标题,否则,我需要隐藏它.

任何提示?

ste*_*274 272

您可以添加OnOffsetChangedListenerAppBarLayout确定何时CollapsingToolbarLayout折叠或展开并设置其标题.

final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsingToolbarLayout);
AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appBarLayout);
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
    boolean isShow = true;
    int scrollRange = -1;

    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
        if (scrollRange == -1) {
            scrollRange = appBarLayout.getTotalScrollRange();
        }
        if (scrollRange + verticalOffset == 0) {
            collapsingToolbarLayout.setTitle("Title");
            isShow = true;
        } else if(isShow) {
            collapsingToolbarLayout.setTitle(" ");//careful there should a space between double quote otherwise it wont work 
            isShow = false;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 它对我有用,但必须将"boolean isShow = false"更改为true才能在活动开始时删除扩展工具栏中的应用名称. (9认同)
  • @Giuseppe:它是一样的.在API 16上测试 - >工作 (3认同)

Rúb*_*usa 43

我尝试了dlohani的解决方案,但由于淡出而不喜欢它.使用此解决方案,您可以完全消除褪色.

诀窍是创建一个textSize等于0.1sp或0sp的新样式(这一个在SDK <19时崩溃)和textColor透明:

对于SDK <19

<style name="CollapsingToolbarLayoutExpandedTextStyle" parent="AppTheme">
    <item name="android:textColor">@android:color/transparent</item>
    <item name="android:textSize">0.1sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

对于SDK> = 19

<style name="CollapsingToolbarLayoutExpandedTextStyle" parent="AppTheme">
    <item name="android:textColor">@android:color/transparent</item>
    <item name="android:textSize">0sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后将其应用于布局中的CollapsingToolbarLayout:

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:expandedTitleTextAppearance="@style/CollapsingToolbarLayoutExpandedTextStyle"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">
Run Code Online (Sandbox Code Playgroud)

  • 问题仍然存在:当折叠工具栏折叠时,文本仍然逐渐消失(这意味着它将覆盖显示的任何其他文本)。 (2认同)

dlo*_*ani 36

通过在xml布局中添加以下属性,我能够获得所需的效果:

app:expandedTitleTextAppearance="@android:color/transparent"
Run Code Online (Sandbox Code Playgroud)

所以我的CollapsingToolbarLayout看起来像这样

<android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsingToolbarLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:expandedTitleTextAppearance="@android:color/transparent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">
Run Code Online (Sandbox Code Playgroud)

  • 只有在使用android api 22或更低版本时才能使用.对于23或更高,该解决方案不起作用.您将不得不使用@ steven274的解决方案. (9认同)
  • 这太可怕了,你看它在崩溃时逐渐消失.相反,它只是淡入最终位置. (7认同)
  • 不再适用于最新的支持库:-( (5认同)

小智 23

我有一个更简单的答案:

final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);

collapsingToolbarLayout.setTitle("Your Title");
collapsingToolbarLayout.setExpandedTitleColor(getResources().getColor(R.color.transperent)); // transperent color = #00000000
collapsingToolbarLayout.setCollapsedTitleTextColor(Color.rgb(0, 0, 0)); //Color of your title
Run Code Online (Sandbox Code Playgroud)

快乐的编码!

  • 这导致与其他答案中引用的问题相同的淡入淡出. (4认同)

Har*_*iya 20

此代码适用于我:使用color.parse颜色,因为如果您的背景颜色不同,则替换为白色,您的标题不显示

collapsingToolbarLayout.setExpandedTitleColor(Color.parseColor("#00FFFFFF"));
Run Code Online (Sandbox Code Playgroud)

或者你可以使用透明 collapsingToolbarLayout.setExpandedTitleColor(Color.TRANSPARENT);


Vis*_*hal 16

我成功添加了淡出的textview,它非常简单.我无法相信没有人想出这个.在工具栏中添加文本视图,并根据appbar回调中的verticalOffset设置它的alpha

mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {

        @Override
        public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {

            mTitleTextView.setAlpha(Math.abs(verticalOffset / (float)
                    appBarLayout.getTotalScrollRange()));
        }
    });
Run Code Online (Sandbox Code Playgroud)


Ale*_*ecs 12

这里最简单,最有效的解决方案也是api 23:

app:expandedTitleTextAppearance必须继承TextAppearance.

因此,在styles.xml中添加以下行:

<style name="TransparentText" parent="@android:style/TextAppearance">
   <item name="android:textColor">#00000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后,在您的CollapsingToolbarLayout中,添加此行.

app:expandedTitleTextAppearance="@style/TransparentText"
Run Code Online (Sandbox Code Playgroud)

这就是所有人!


Par*_*tel 6

下面的解决方案完美地工作。

appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
                @Override
                public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                    if (Math.abs(verticalOffset)-appBarLayout.getTotalScrollRange() == 0)
                    {
                        // Collapsed
                        setTitle("Title To Show");
                    }
                    else
                    {
                        // Expanded
                        setTitle("");
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)