Показывать CollapsingToolbarLayout Название ТОЛЬКО при свертывании

В названии говорится все. Я попробовал setExpandedTitleColor и setCollapsedTitleColor (переход на прозрачность и из прозрачного) без везения. Я не вижу никаких встроенных методов, которые будут делать то, что я ищу.

Я хочу показать заголовок, когда CollapsingToolbarLayout полностью рухнул, в противном случае он мне нужен.

Любые намеки?

Вы можете добавить OnOffsetChangedListener в AppBarLayout чтобы определить, когда CollapsingToolbarLayout AppBarLayout или расширено и задано его название.

 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, но мне это не нравилось из-за угасания. С помощью этого решения вы полностью удаляете выцветание.

Фокус в том, чтобы создать новый стиль с 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 

Счастливое кодирование!

Этот код работает для меня: используйте цвет color.parse, потому что если ваш фоновый цвет отличается от другого, замените его белым, а ваш заголовок не отобразится

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

Или вы можете использовать для прозрачного collapsingToolbarLayout.setExpandedTitleColor(Color.TRANSPARENT);

Я успешно добавляю затухающий текст, это было так просто. Я не могу поверить, что никто этого не придумал. Добавить текстовое представление на панели инструментов и установить его на основе alpha на основе verticalOffset в обратном вызове панели управления

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

Здесь простейшее и рабочее решение также с api 23:

App: expandTitleTextAppearance должен наследовать TextAppearance.

Итак, в вашем файле styles.xml добавьте следующие строки:

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

Затем в вашем CollapsingToolbarLayout добавьте эту строку.

 app:expandedTitleTextAppearance="@style/TransparentText" 

Это все люди!

Вот мое решение:

 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; } } }); 

В моем oppinion немного более элегантным решением было бы что-то вроде этого.

 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" ...> 

Существует также возможность исчезать / в тексте, а не просто показывать или скрывать его.