Show view when toolbar collapses

后端 未结 2 953
时光取名叫无心
时光取名叫无心 2020-12-23 14:42

I have an activity with a CoordinatorLayout, AppBarLayout, CollapsingToolbarLayout and Toolbar. So, basically, a view tha

2条回答
  •  旧时难觅i
    2020-12-23 15:36

    Instead of trying to replicate when the scrim is supposed to show (collapsed) or not (expanded), a better way is to override the setScrimsShown method, which is called every time inside the CollapsingToolbarLayout's onOffsetChanged, and add a listener to it like this:

    public class CollapsingToolbarLayoutWithScrimListener extends CollapsingToolbarLayout {
    
        public CollapsingToolbarLayoutWithScrimListener(Context context) {
            super(context);
        }
    
        public CollapsingToolbarLayoutWithScrimListener(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public CollapsingToolbarLayoutWithScrimListener(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context,attrs,defStyleAttr);
        }
    
        private ScrimListener scrimListener = null;
    
        @Override
        public void setScrimsShown(boolean shown, boolean animate) {
            super.setScrimsShown(shown, animate);
            if (scrimListener != null)
                scrimListener.onScrimShown(shown);
        }
    
        public void setScrimListener(ScrimListener listener) {
            scrimListener = listener;
        }
    
        public interface ScrimListener {
    
            void onScrimShown(boolean shown);
        }
    }
    

提交回复
热议问题