更改工具栏和CollapsingToolbarLayout以编程方式滚动标记

时间:2015-09-05 23:34:14

标签: android android-layout android-fragments material-design android-support-design

我有一个包含大量片段的Activity Android应用程序。当我显示列表屏幕时,我想将Toolbarapp:layout_scrollFlags="scroll|enterAlways"属性一起使用。在细节片段中,我想使用带有图像的CollapsingToolbarLayout。由于它是一个Activity应用程序,因此我只有一个Toolbar。是否可以通过编程方式修改我的布局以适应这两种情况?

3 个答案:

答案 0 :(得分:10)

是。假设您要从CollapsingToolbarLayout片段转到工具栏。

  1. 您使用AppBarLayout;

  2. 折叠了AppBarLayout.setExpanded(false)
  3. 您可以更改滚动标记以满足您的需求。

    AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    p.setScrollFlags(...);
    toolbar.setLayoutParams(p);
    

    如果需要,还可以使用CollapsingToolbarLayout。我想它应该是这样的:

    collapsingToolbarParams.setScrollFlags(0); //no flags for ctl
    toolbarParams.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS); //new flags for toolbar
    

答案 1 :(得分:0)

  

我发现它可以正常工作

public void disableToolBarScrolling() {
    CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    params.setScrollFlags(0);
}

public void enableToolBarScrolling() {
    CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    params.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS);
}

答案 2 :(得分:0)

对我有用。

public void enableToolBarScrolling(CollapsingToolbarLayout toolbar) {
    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    params.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS);
    toolbar.setLayoutParams(params);
}