对比于上一篇文章http://blog.csdn.net/chazihong/article/details/74351963
想实现CollapsingToolbarLayout中的title,在整个展开时不显示title,在整体收缩状态时显示title。
对AppBarLayout控件进行监听,分为三种状态进行监听。
EXPANDED, // 展开
COLLAPSED, // 折叠
IDLE // 其他
首先,创建AppBarStateChangedListener抽象类继承AppBarLayout.OnOffsetChangedListener,并重写onOffsetChanged方法。
package com.example.administrator.coordinatordemo;
import android.support.design.widget.AppBarLayout;
/**
* Created by Administrator on 2017/7/4.
*/
public abstract class AppBarStateChangedListener implements AppBarLayout.OnOffsetChangedListener {
// AppBar状态
public enum State {
EXPANDED, // 展开
COLLAPSED, // 折叠
IDLE // 其他
}
private State mCurrentState = State.IDLE;
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
if (i == 0) {
if (mCurrentState != State.EXPANDED) {
onStateChanged(appBarLayout, State.EXPANDED);
}
mCurrentState = State.EXPANDED;
} else if (Math.abs(i) >= appBarLayout.getTotalScrollRange()) {
if (mCurrentState != State.COLLAPSED) {
onStateChanged(appBarLayout, State.COLLAPSED);
}
mCurrentState = State.COLLAPSED;
} else {
if (mCurrentState != State.IDLE) {
onStateChanged(appBarLayout, State.IDLE);
}
mCurrentState = State.IDLE;
}
}
public abstract void onStateChanged(AppBarLayout appBarLayout, State state);
}
在MainActivity.java中,给AppBarLayout控件添加监听。
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangedListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, State state) {
// 展开状态
if (state == State.EXPANDED) {
toolbarLayout.setTitle("");
} else if (state == State.COLLAPSED) {
toolbarLayout.setTitle("JacksonYi");
} else {
toolbarLayout.setTitle("");
}
}
});
在状态改变时,进行响应的逻辑处理。这里就是简单的处理title是否显示。