Android 防止折叠工具栏布局折叠(如果不需要)

Android 防止折叠工具栏布局折叠(如果不需要),android,android-support-library,android-toolbar,android-collapsingtoolbarlayout,Android,Android Support Library,Android Toolbar,Android Collapsingtoolbarlayout,使用: 随着项目的更新 关于奶酪的细节,我去掉了两张卡片(只有一张)。有没有办法防止显示空白的工具栏崩溃 要在示例中实现这样的行为,只需将NestedScrollView的android:layout\u height参数修改为wrap\u content。 如果内容足够小,可以放在屏幕上,它将阻止内容滚动 为了防止通过collavingToolbarLayout滚动,您应该通过编程方式将layout\u scrollFlags参数设置为AppBarLayout.LayoutParams.SCR

使用:

随着项目的更新

关于奶酪的细节,我去掉了两张卡片(只有一张)。有没有办法防止显示空白的工具栏崩溃


要在示例中实现这样的行为,只需将NestedScrollView的
android:layout\u height
参数修改为
wrap\u content
。 如果内容足够小,可以放在屏幕上,它将阻止内容滚动

为了防止通过
collavingToolbarLayout
滚动,您应该通过编程方式将
layout\u scrollFlags
参数设置为
AppBarLayout.LayoutParams.SCROLL\u FLAG\u SNAP


描述了如何执行此操作。

在xml中,我使用了属性


app:layout\u scrollFlags=“snap”
中,这是我的工作代码,用于最初折叠条:

_appbar.setExpanded(false)

下面是布局xml

   AppBarLayout _appbar = (AppBarLayout) findViewById(R.id.appbar);
    _appbar.setExpanded(false);

您可以为此使用以下代码:

 <android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/detail_backdrop_height"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleMarginEnd="64dp">



        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

            app:layout_collapseMode="pin" />





    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

受@Vishal答案启发的数据绑定解决方案


@BindingAdapter(“app:enableClopsingScroll”)
fun SetColasingToolbarLayoutScrollEnabled(ColasingToolbarLayout:ColasingToolbarLayout,enabled:Boolean?){
val lp=塌陷ToolbarLayout.layoutParams作为AppBarLayout.layoutParams
if(enabled.orFalse()){
lp.scrollFlags=AppBarLayout.LayoutParams.SCROLL\u FLAG\u SCROLL或AppBarLayout.LayoutParams.SCROLL\u FLAG\u EXIT\u直到\u折叠
}否则{
lp.scrollFlags=AppBarLayout.LayoutParams.SCROLL\u FLAG\u SNAP
}
塌陷ToolbarLayout.layoutParams=lp
}

我没有找到真正的解决方案,但是我现在正在使用,我没有这个问题(因为实现不同),您对此做了什么?这是您需要的,或者在xml add
app:layout\u scrollFlags=“snap”中
到CollavingToolbarLayout标记,则嵌套的scrollview很好,但折叠工具栏仍然是scrollablelayout\u scrollFlags不工作。使用此解决方法可禁用折叠工具栏布局滚动。这是一种真实的方式,而且确实有效!)为我工作,因为我想!问题是如何防止倒塌
   AppBarLayout _appbar = (AppBarLayout) findViewById(R.id.appbar);
    _appbar.setExpanded(false);
 <android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/detail_backdrop_height"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleMarginEnd="64dp">



        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

            app:layout_collapseMode="pin" />





    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>
   public static void stopScroll() {
    AppBarLayout.LayoutParams toolbarLayoutParams = (AppBarLayout.LayoutParams) collapsing_toolbar.getLayoutParams();
    toolbarLayoutParams.setScrollFlags(0);
    collapsing_toolbar.setLayoutParams(toolbarLayoutParams);

    CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appbar.getLayoutParams();
    appBarLayoutParams.setBehavior(null);
    appbar.setLayoutParams(appBarLayoutParams);
}

public static void startScroll() {
    AppBarLayout.LayoutParams toolbarLayoutParams = (AppBarLayout.LayoutParams) collapsing_toolbar.getLayoutParams();
    toolbarLayoutParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
    collapsing_toolbar.setLayoutParams(toolbarLayoutParams);

    CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appbar.getLayoutParams();
    appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
    appbar.setLayoutParams(appBarLayoutParams);
}
  AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) activityUserGroupProfleBinding.collapsingToolbarLayout.getLayoutParams();
        if (logic) {
            params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
        } else {
            params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP);
        }
        activityUserGroupProfleBinding.collapsingToolbarLayout.setLayoutParams(params);