将视图粘贴在协调器布局内的 viewpager 片段的底部

Posted

技术标签:

【中文标题】将视图粘贴在协调器布局内的 viewpager 片段的底部【英文标题】:Stick view at the bottom of the fragment of a viewpager inside coordinator layout 【发布时间】:2016-01-15 02:31:44 【问题描述】:

我有一个放置在协调器布局内的 viewpager。在 viewpager 的特定片段中,我有一个回收器视图和片段底部的视图。问题是最初片段底部的视图是隐藏的,只有当我向上滚动时才可见。我希望视图保持在屏幕底部。

文件名:activity_main.xml

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

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        style="@style/ToolBarStyle"
        android:layout_
        android:layout_
        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_
        android:layout_ />
</android.support.design.widget.AppBarLayout>

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

【问题讨论】:

您找到解决问题的方法了吗?我认为唯一可行的是将锚定视图移出片段并进入 CoordinatorLayout,但这对我来说不是一个可行的解决方案 @darnmason 在活动中实现 AppBarLayout.OnOffsetChangedListener。在 onOffsetChanged 方法中,根据当前滚动的高度调整底部视图的边距。 干杯,似乎工作得很好! @arkit 我可以有这个代码吗?我面临同样的问题,找不到任何解决方案。 【参考方案1】:

在活动中实现 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 是底部的视图。

【讨论】:

以上是关于将视图粘贴在协调器布局内的 viewpager 片段的底部的主要内容,如果未能解决你的问题,请参考以下文章

带有 viewpager 的协调器布局,滚动不起作用

Android 布局:具有滚动行为的 Viewpager 内的垂直 Recyclerview 内的水平 Recyclerview

约束布局中的 ViewPager 选项卡式活动在底部被剪切以用于 recyclerview

ViewPager2嵌套RecyclerView滑动冲突解决办法

如何在viewPager的视图顶部使用nestedScrollView中的viewpager

将片段用于横向视图和 ViewPager