仅在折叠时显示CollapsingToolbarLayout标题

标题说明了一切。 我试过setExpandedTitleColorsetCollapsedTitleColor (切换到透明),没有运气。 我看不到任何内置的方法可以做我想要的。

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

任何提示?

您可以将OnOffsetChangedListener添加到AppBarLayout以确定CollapsingToolbarLayout何时CollapsingToolbarLayout或展开并设置其标题。

 final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsingToolbarLayout); AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appBarLayout); appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { boolean isShow = false; 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(" ");//carefull there should a space between double quote otherwise it wont work isShow = false; } } }); 

我能够通过将以下属性添加到xml布局来获得所需的效果:

 app:expandedTitleTextAppearance="@android:color/transparent" 

所以我的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"> 

我尝试了dlohani的解决scheme,但是因为淡出而不喜欢它。 有了这个解决scheme,你完全消除了褪色。

诀窍是创build一个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> 

对于SDK> = 19

 <style name="CollapsingToolbarLayoutExpandedTextStyle" parent="AppTheme"> <item name="android:textColor">@android:color/transparent</item> <item name="android:textSize">0sp</item> </style> 

然后将其应用于布局中的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"> 

我有一个更简单的答案:

 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 

快乐编码!

我成功添加了一个淡出的textview,这是如此简单。 我不能相信没有人提出这个问题。 在工具栏中添加文本视图,并根据appbarcallback中的verticalOffset设置它的alpha值

 mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { mTitleTextView.setAlpha(Math.abs(verticalOffset / (float) appBarLayout.getTotalScrollRange())); } }); 

这段代码适用于我:使用color.parse颜色,因为如果你的背景颜色不同,那么用白色代替,你的标题不显示

 collapsingToolbarLayout.setExpandedTitleColor(Color.parseColor("#00FFFFFF")); 

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

这里最简单的工作解决scheme也与api 23:

app:expandedTitleTextAppearance必须inheritanceTextAppearance。

所以,在你的styles.xml中添加这些行:

 <style name="TransparentText" parent="@android:style/TextAppearance"> <item name="android:textColor">#00000000</item> </style> 

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

 app:expandedTitleTextAppearance="@style/TransparentText" 

这就是所有人!

这是我的解决scheme:

 collapsingToolbar.setCollapsedTitleTextAppearance(R.style.personal_collapsed_title); collapsingToolbar.setExpandedTitleTextAppearance(R.style.personal_expanded_title); <style name="personal_collapsed_title"> <item name="android:textSize">18sp</item> <item name="android:textColor">@color/black</item> </style> <style name="personal_expanded_title"> <item name="android:textSize">0sp</item> </style> 

这对我有用。

  final Toolbar tool = (Toolbar)findViewById(R.id.toolbar); CollapsingToolbarLayout c = (CollapsingToolbarLayout)findViewById(R.id.collapsing_toolbar); AppBarLayout appbar = (AppBarLayout)findViewById(R.id.app_bar_layout); tool.setTitle(""); setSupportActionBar(tool); c.setTitleEnabled(false); appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { boolean isVisible = true; int scrollRange = -1; @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (scrollRange == -1) { scrollRange = appBarLayout.getTotalScrollRange(); } if (scrollRange + verticalOffset == 0) { tool.setTitle("Title"); isVisible = true; } else if(isVisible) { tool.setTitle(""); isVisible = false; } } }); 

在我看来,更优雅的解决scheme就是这样的。

 public class MyCollapsingToolbarLayout extends CollapsingToolbarLayout { private final int toolbarId; @Nullable private Toolbar toolbar; public MyCollapsingToolbarLayout(Context context, AttributeSet attrs) { super(context, attrs); setTitleEnabled(false); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CollapsingToolbarLayout, 0, R.style.Widget_Design_CollapsingToolbar); toolbarId = a.getResourceId(android.support.design.R.styleable.CollapsingToolbarLayout_toolbarId, -1); a.recycle(); } @Override public void setScrimsShown(boolean shown, boolean animate) { super.setScrimsShown(shown, animate); findToolbar(); if (toolbar != null) { toolbar.setTitleTextColor(shown ? Color.WHITE : Color.TRANSPARENT); } } private void findToolbar() { if (toolbar == null) { toolbar = (Toolbar) findViewById(toolbarId); } } } 

用法看起来像这样

 <butter.droid.widget.BurtterCollapsingToolbarLayout app:toolbarId="@+id/toolbar" ...> 

也可以淡入/淡出,而不是只显示或隐藏它。