监听CollaspingToolbarLayout折叠完成事件

来源:互联网 发布:淘宝晚礼服 编辑:程序博客网 时间:2024/05/10 01:15

看了CollaspingToolbarLayout的源码,发现没有关于折叠事件的监听器,要是需要在折叠完成后完成一些设置,就不能直接通过设置监听器完成了。
不过看了AppbarLayout之后,发现AppbarLayout最前面就有一个接口的声明。

/** * Interface definition for a callback to be invoked when an {@link AppBarLayout}'s vertical * offset changes. */public interface OnOffsetChangedListener {    /**     * Called when the {@link AppBarLayout}'s layout offset has been changed. This allows     * child views to implement custom behavior based on the offset (for instance pinning a     * view at a certain y value).     *     * @param appBarLayout the {@link AppBarLayout} which offset has changed     * @param verticalOffset the vertical offset for the parent {@link AppBarLayout}, in px     */    void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset);}

这个Listener可以监听AppbarLayout的改变,而CollaspingToolbar的效果其中之一就是改变AppbarLayout的高度。

appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener()        {            //verticalOffset是当前appbarLayout的高度与最开始appbarlayout高度的差,向上滑动的话是负数。            @Override            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset)            {                //如果折叠后固定,那么以下判断则是折叠完成时为true                if (getSupportActionBar().getHeight() - appBarLayout.getHeight() == verticalOffset) {                  //do something                }             }        });

使用CollaspingToolbarLayout遇到的问题:一般情况下,CollaspingToolbarLayout必须是AppbarLayout的第一个子元素,这样折叠才有效。

0 0