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

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

文件名: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 在活动中实现 AppBarLayout.OnOffsetChangedListener。在 onOffsetChanged 方法中,根据当前滚动的高度调整底部视图的边距。
  • 干杯,似乎工作得很好!
  • @arkit 我可以有这个代码吗?我面临同样的问题,找不到任何解决方案。

标签: android android-layout androiddesignsupport


【解决方案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 是底部的视图。

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多