将一个视图粘贴在协调布局(coordinator layout)中viewpager片段的底部

8
我有一个ViewPager,它位于CoordinatorLayout中。在ViewPager的特定Fragment中,我有一个RecyclerView和一个位于该Fragment底部的View。问题是,最初该Fragment底部的View被隐藏了,只有向上滚动时才可见。我希望该View始终停留在屏幕底部。

文件名:activity_main.xml

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

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        style="@style/ToolBarStyle"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:layout_alignParentTop="true"
        android:background="@color/toolbarColor"
        android:contentInsetEnd="16dp"
        android:contentInsetRight="16dp"
        android:minHeight="?actionBarSize"
        android:paddingBottom="0dp"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="com.dekorate.android.Utils.AppBarLayoutBehavior" />
</android.support.design.widget.CoordinatorLayout>

你找到解决问题的方法了吗?我唯一想到的解决方案是将锚定视图从片段中移出并放入CoordinatorLayout中,但对我来说这不是可行的解决方案。 - darnmason
1
@darnmason 在活动中实现AppBarLayout.OnOffsetChangedListener。在onOffsetChanged方法中,根据当前滚动的高度调整底部视图的边距。 - arkit
谢谢,看起来运行得足够好! - darnmason
@arkit,能给我这个代码吗?我遇到了同样的问题,找不到任何解决方法。 - Chintan Rathod
1个回答

0
在该活动中实现AppBarLayout.OnOffsetChangedListener。在onOffsetChanged方法中,根据当前滚动的高度调整底部视图的边距。
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int i) {

    RelativeLayout.LayoutParams bottomLayoutParams = (RelativeLayout.LayoutParams)fragment.bottomLayout.getLayoutParams();
    bottomLayoutParams.setMargins(0,0,0,(actionBarHeight + i));
    fragment.bottomLayout.setLayoutParams(bottomLayoutParams);

}

这里的 fragment 是您的片段实例,bottomLayout 是底部的视图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接