Показать CollapsingToolbarLayout Название ТОЛЬКО при свертывании
в названии говорится все. Я пробовал setExpandedTitleColor
и setCollapsedTitleColor
(переход на прозрачность и обратно) без везения. Я не вижу никаких встроенных методов, которые будут делать то, что я ищу.
Я хочу показать только заголовок, когда CollapsingToolbarLayout полностью свернут, в противном случае он мне нужен.
Любые подсказки?
Ответы
Ответ 1
Вы можете добавить OnOffsetChangedListener
в AppBarLayout
, чтобы определить, когда 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;
}
}
});
Ответ 2
Мне удалось получить желаемый эффект, добавив следующее свойство в макет 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">
Ответ 3
Я попробовал решение 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">
Ответ 4
У меня есть более простой ответ:
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
Счастливое кодирование!
Ответ 5
Я успешно добавляю затухающий текст, это было так просто. Я не могу поверить, что никто этого не придумал.
Добавьте текстовый вид в панель инструментов и установите его на основе вертикального ввода-вывода в обратном вызове панели управления
mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
mTitleTextView.setAlpha(Math.abs(verticalOffset / (float)
appBarLayout.getTotalScrollRange()));
}
});
Ответ 6
Этот код работает для меня:
Используйте цвет color.parse, потому что если ваш фоновый цвет отличается от другого, замените его белым, а ваш заголовок не отобразится
collapsingToolbarLayout.setExpandedTitleColor(Color.parseColor("#00FFFFFF"));
Или вы можете использовать для прозрачных
collapsingToolbarLayout.setExpandedTitleColor(Color.TRANSPARENT);
Ответ 7
Здесь простейшее и рабочее решение также с 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"
Что все люди!
Ответ 8
Вот мое решение:
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>
Ответ 9
Это работает для меня.
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;
}
}
});
Ответ 10
В моем 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"
...>
Существует также возможность исчезать/в тексте, а не просто показывать или скрывать его.