Android 如何实现滚动时在工具栏中弹出文本,如在Twitter应用程序中

Android 如何实现滚动时在工具栏中弹出文本,如在Twitter应用程序中,android,android-toolbar,android-coordinatorlayout,android-collapsingtoolbarlayout,Android,Android Toolbar,Android Coordinatorlayout,Android Collapsingtoolbarlayout,在下面的Twitter应用程序中可以看到在工具栏中进行文本转换/动画:当用户名位于工具栏后面时,它会“弹出”到工具栏中 或者,让文本滚动到工具栏后面并停留在那里 您可以将OnOffsetChangedListener添加到AppBarLayout,以确定折叠ToolBarLayout的折叠或展开时间,并设置其标题 final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewBy

在下面的Twitter应用程序中可以看到在工具栏中进行文本转换/动画:当用户名位于工具栏后面时,它会“弹出”到工具栏中

或者,让文本滚动到工具栏后面并停留在那里


您可以将OnOffsetChangedListener添加到AppBarLayout,以确定折叠ToolBarLayout的折叠或展开时间,并设置其标题

final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
collapsingToolbarLayout.setTitle(" ");

AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.app_bar_layout);
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;
        }
    }
});

您可以将OnOffsetChangedListener添加到AppBarLayout,以确定折叠ToolBarLayout的折叠或展开时间,并设置其标题

final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
collapsingToolbarLayout.setTitle(" ");

AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.app_bar_layout);
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;
        }
    }
});