gpt4 book ai didi

android - 如何创建与 CoordinatorLayout 内容重叠的 AppBarLayout

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

在某些 Activity 中使用 CoordinatorLayoutAppBarLayout 时,我需要将内容放在 AppBarLayout 下方,即工具栏使用一些透明的颜色并覆盖内容。默认情况下,CoordinatorLayout + AppBarLayout 安排工具栏和滚动内容彼此相邻,没有任何重叠。

Android 开发者指南有关于此的文档 here它看起来像这样(但这些标志似乎不适用于 Toolbar 和 appcompat - 我试过了):

Overlaying ActionBar

所以我需要一些类似于上图的东西,但包含 CoordinatorLayout + AppBarLayout 提供的所有滚动功能。并且不需要使用 CollapsingToolbarLayout - 就这个简单的。

关于如何实现这一目标的任何提示?这是我的 Activity 布局。

<android.support.design.widget.CoordinatorLayout
android:id="@+id/top_content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:background="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<include layout="@layout/main_toolbar"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<!-- to be filled by content fragment -->
</FrameLayout>
<android.support.design.widget.FloatingActionButton
style="@style/FabStyle"
android:id="@+id/fab_button"
android:src="@drawable/bt_filters"
/>
</android.support.design.widget.CoordinatorLayout>

最佳答案

我试过这个解决方案,它有效。

透明度:AppBarLayout添加背景,并在AppBarLayout之前的布局中放置 ScrollView

<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000" >

内容定位:通过新的 AppbBarTransparentScrollingViewBehavior 扩展 AppBarLayout.ScrollingViewBehavior 覆盖 onDependentViewChanged() 并将 updateOffset() 修改为 offset = 0

@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, View child,
View dependency) {
updateOffset(parent, child, dependency);
return false;
}

private boolean updateOffset(CoordinatorLayout parent, View child,
View dependency) {
final CoordinatorLayout.Behavior behavior = ((CoordinatorLayout.LayoutParams) dependency
.getLayoutParams()).getBehavior();
if (behavior instanceof Behavior) {
// Offset the child so that it is below the app-bar (with any
// overlap)
final int offset = 0; // CHANGED TO 0
setTopAndBottomOffset(offset);
return true;
}
return false;
}

新内容的行为:设置 ScrollView 的行为

<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
layout_behavior="AppbBarTransparentScrollingViewBehavior" />

结果:在 NestedScrollView 中有一个 ImageView 作为 ScrollView

enter image description here

关于android - 如何创建与 CoordinatorLayout 内容重叠的 AppBarLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761319/

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