当前位置: 首页 > 知识库问答 >
问题:

如何以编程方式在协调器布局中显示折叠的元素?

谭景明
2023-03-14

我有CoordinatorLayout,如博客中所述:http://android-developers.blogspot.ru/2015/05/android-design-support-library.html

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

  <android.support.design.widget.AppBarLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content">
     <android.support.v7.widget.Toolbar
              ...
              app:layout_scrollFlags="scroll|enterAlways">

     <TextView
              ...
              app:layout_scrollFlags="scroll|enterAlways">
   </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>

AppBarLayout中,我有工具栏文本视图以及其他状态信息。应用栏布局可以折叠(滚动后)。有时我需要显示 AppBarLayout 才能显示更改的状态。

如何编程实现?

共有3个答案

舒枫涟
2023-03-14

在我的情况下,我使用这个解决方案

 public void resetAppBarLayout() {
    if (mContentContainer != null) {
        final AppBarLayout.ScrollingViewBehavior container_behavior = ((AppBarLayout.ScrollingViewBehavior)
                ((CoordinatorLayout.LayoutParams) mContentContainer.getLayoutParams()).getBehavior());
        if (container_behavior != null) {
            container_behavior.setTopAndBottomOffset(appBarLayout.getTotalScrollRange());
        }
        final AppBarLayout.Behavior appbar_behavior = ((AppBarLayout.Behavior)
                ((CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams()).getBehavior());
        if (appbar_behavior != null) {
            appbar_behavior.setTopAndBottomOffset(0);
        }
    }
}

用于强制显示appbarlayout。将滚动视图重置为appbarLayout最大滚动范围,并将appbarLayout重置为起始位置=0。

洪高阳
2023-03-14

由于Tu的回答ấn晶体管ần Anh,在这里创建,您可以使用这两种方法以编程方式折叠和扩展CoordinatorLayout

public void collapseToolbar(){
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appbarLayout.getLayoutParams();
    behavior = (AppBarLayout.Behavior) params.getBehavior();
    if(behavior!=null) {
        behavior.onNestedFling(rootLayout, appbarLayout, null, 0, 10000, true);
    }
}

public void expandToolbar(){
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appbarLayout.getLayoutParams();
    behavior = (AppBarLayout.Behavior) params.getBehavior();
    if(behavior!=null) {
        behavior.setTopAndBottomOffset(0);
        behavior.onNestedPreScroll(rootLayout, appbarLayout, null, 0, 1, new int[2]);
    }
}
索令
2023-03-14

如其他评论所述:

使用支持库v23,您可以调用< code > appbar layout . set expanded(true/false)

 类似资料:
  • 这个链接!告诉我如何禁用折叠工具栏布局。我想要的行为是折叠并禁用折叠工具栏,并在没有internet连接时显示错误视图。那么我如何才能做到这一点,折叠和禁用折叠工具栏布局?

  • 简单的问题,但我找不到答案。如何以编程方式折叠或展开? ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

  • > 单击“加载”按钮后,如果设置了任何一个textfield,则“手风琴面板”筛选器将展开。 点击“加载”按钮后,如果没有设置所有文本字段,那么“手风琴面板”过滤器将会折叠。 我已经通过手风琴面板的primefaces文档,但没有发现它的帮助。http://www.primefaces.org/docs/vdl/3.5/primefaces-p/accordionpanel.html

  • 我正在使用以及和设置为固定,我想知道当折叠时,是否有方法更改工具栏的标题文本。 总结一下,我想要滚动和展开时的两个不同的标题。 提前谢谢大家

  • 我在CollapsingToolbarLayout中有ImageView和TabLayout(4个选项卡),现在我想在单击选项卡(2,3,4)时折叠Appbar,第一个选项卡应该正常工作(按滚动)。有没有方法以编程方式展开和折叠Appbar? 然而,我看到了解决方案,appBarLayout.setExpanded(false)折叠Appbar,但它又可以向下拖动。我想阻止AppBar展开,直到选

  • 我在通用应用程序的底部显示一个视图,并在视图中动态添加该视图。我希望每次都能像iAd一样在底部显示这个视图。在两个方向上。如何为此添加约束。请建议。 谢谢