gpt4 book ai didi

android - 工具栏在向下滑动时展开

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:37 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个折叠工具栏。如果我启动一个特定的 fragment ,我想折叠工具栏,使其表现得像一个“正常”的 fragment ,并且用户不能自己扩展它。这是我用于工具栏的布局:

<android.support.design.widget.AppBarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

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

<ImageView
android:src="@drawable/drawer_background"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
android:layout_width="match_parent"
android:layout_height="172dp"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
android:minHeight="100dp" />

<android.support.v7.widget.Toolbar
android:id="@+id/toolBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:layout_scrollFlags="scroll|enterAlways" />

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

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

我也可以像这样从代码中折叠布局:

appBarLayout.setExpanded(false, false);

final AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
params.setScrollFlags(0);
collapsingToolbarLayout.setLayoutParams(params);

但这并没有帮助。如果用户从工具栏向下滑动,它将展开。

你知道为什么吗?

最佳答案

核心问题是目前还没有CollapsingToolbarLayout.lock();方法(支持设计的v23.2.1)。希望此功能将包含在未来的版本中。在此之前,我建议采用以下解决方法:

您可以折叠并锁定您的工具栏:

appbar.setExpanded(false,false);
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appbar.getLayoutParams();
lp.height = (int) getResources().getDimension(R.dimen.toolbar_height);

并解锁:

 CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appbar.getLayoutParams();
lp.height = (int) getResources().getDimension(R.dimen.nav_header_height);

但是,上面的代码出现了一个问题:

当强制折叠 CoordinatorLayout 时,我们工具栏的标题消失了,CollapsingToolbarLayout.setTitle(CharSequence title); 不再有效。为了解决这个问题,我们在我们的工具栏中添加了一个 TextView 并相应地操作它的可见性。 (我们希望它在工具栏“解锁”的 fragment 中“消失”,而在工具栏“锁定”的 fragment 中“可见”。

我们必须将 TextView 的 android:textAppearance 设置为与 CollapsingToolbarLayout 的 app:collapsedTitleTextAppearance 相同,以避免使用不同的工具栏文本大小和颜色打扰用户。

总而言之,使用这样的界面:

public interface ToolbarManipulation {
void collapseToolbar();
void expandToolbar();
void setTitle(String s);
}

像这样的实现:

@Override
public void collapseToolbar(){
appbar.setExpanded(false,false);
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appbar.getLayoutParams();
lp.height = (int) getResources().getDimension(R.dimen.toolbar_height);
toolbarCollapsedTitle.setVisibility(View.VISIBLE);
}

@Override
public void expandToolbar() {
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams)appbar.getLayoutParams();
lp.height = (int) getResources().getDimension(R.dimen.nav_header_height);
toolbarCollapsedTitle.setVisibility(View.GONE);
}

@Override
public void setTitle(String s) {
collapsingToolbarLayout.setTitle(s);
toolbarCollapsedTitle.setText(s);
collapsingToolbarLayout.invalidate();
toolbarCollapsedTitle.invalidate();
}

和主要的 xml 是这样的:

....
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:collapsedTitleTextAppearance="@style/CollapsedAppBar"

>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay"
>
<TextView
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:visibility="gone"
android:layout_gravity="center_vertical|start"
android:gravity="center_vertical|start"
android:id="@+id/toolbar_collapsed_title"
android:textAppearance="@style/CollapsedAppBar"
/>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
......

您可以随意锁定和解锁您的工具栏。您的 fragment 应在其 onResume() 中调用这些函数;

我已经上传了一个示例实现 here .

注意:这只是一种解决方法,显然不是最干净的解决方案。我们正在等待更新版本的 com.android.support 来解决这个问题。

关于android - 工具栏在向下滑动时展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35821502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com