片段中的 RecyclerView 没有从父级中的 nestedScollView 中获取滚动行为 activity
RecyclerView in fragment not taking scroll behaviours from nestedScollView in parent activity
我有一个 activity 在 nestedScrollView 内的线性布局内包含 viewPager,我在 viewPager 内和每个 recyclerView 内有 3 个片段
问题是 viewPager 没有占用片段的宽度,所以当我滚动 recyclerView 时它滚动正常但在 activity 的特定部分
我不知道如何正确描述这个问题,但我会插入一些图像和代码来显示问题
1- 滚动前
2- 在父级中滚动 nestedScrollView 时 activity
3- 在 viewPager 中滚动片段时
所以我想当我滚动时,选项卡将滚动到工具栏之后
我已经尝试了很多解决方案,但都没有用
这是parentActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<data>
<variable
name="presenter"
type="qatar2022.com.ramiissa.components.Profile.FriendProfile.Root.FriendProfilePresenter" />
</data>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/friend_profile_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fillViewport="true"
android:background="@android:color/white">
<android.support.design.widget.AppBarLayout
android:id="@+id/friend_profile_app_bar_layout"
android:layout_width="match_parent"
android:layout_height="250dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/friend_profile_collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:titleEnabled="false">
<ImageView
android:id="@+id/friend_profile_cover"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:src="@drawable/cover"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/friend_profile_tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:contentInsetStartWithNavigation="0dp"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/friend_profile_nested_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/friend_profile_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:text="Martha Harris"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
android:textColor="@color/grey_90" />
<TextView
android:id="@+id/friend_profile_user_friend_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/spacing_large"
android:layout_marginTop="@dimen/spacing_large"
android:layout_marginRight="@dimen/spacing_large"
android:gravity="center"
android:text="5000 Friends"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
android:textColor="@color/grey_60" />
<TextView
android:id="@+id/friend_profile_user_some_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/spacing_large"
android:layout_marginTop="@dimen/spacing_large"
android:layout_marginRight="@dimen/spacing_large"
android:gravity="center"
android:text="Some info"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
android:textColor="@color/black" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_large"
android:orientation="horizontal">
<Button
android:id="@+id/friend_profile_user_message_button"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:background="@drawable/btn_rounded_primary"
android:drawableStart="@drawable/message"
android:drawableTint="@color/white"
android:paddingStart="20dp"
android:paddingEnd="15dp"
android:text="MESSAGE"
android:textColor="@color/white" />
<Button
android:id="@+id/friend_profile_friend_button"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:background="@drawable/btn_rounded_blue_gray"
android:drawableStart="@drawable/friend"
android:drawableTint="@color/white"
android:paddingStart="20dp"
android:paddingEnd="15dp"
android:text="ADD FRIEND"
android:textColor="@color/white" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/flag_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_nationality"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_nationality_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Syria"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/birthday_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_birthday"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_birthday_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="10-NOVEMBER"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/relationship_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_relationship"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_relationship_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Single"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/work_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_working"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_work_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Android Developer"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<android.support.design.widget.TabLayout
android:id="@+id/friend_profile_tab_layout"
style="@style/ProfileTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@color/grey_300"
android:clipToPadding="false"
android:visibility="visible"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/pale_white" />
<android.support.v4.view.ViewPager
android:id="@+id/friend_profile_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/friend_profile_user_photo"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/example"
app:civ_border_color="@color/white"
app:civ_border_width="1dp"
app:layout_anchor="@+id/friend_profile_app_bar_layout"
app:layout_anchorGravity="bottom|center" />
</android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.SwipeRefreshLayout>
你能测试我的建议吗?请将 TabLayout 和 ViewPager 放在 NestedScrollView 之外,并在 parent layout.Of 的每个片段布局中使用 NestedScrollView 当然,您可以将页面 header 部分放置并通过包含标签在 CollapsingToolbarLayout 中使用它但是测试第一个建议。
在主布局中:
<AppBarLayout>
<CollapsingToolbarLayout android:fitsSystemWindows="true">
<include layout="include_header" />
<Toolbar />
</CollapsingToolbarLayout>
</AppBarLayout>
<ViewPager />
在include_header部分:
<FrameLayout android:fitsSystemWindows="true">
<ConstraintLayout />
</FrameLayout>
我在背景图像的约束布局中使用比例 header:
应用程序:layout_constraintDimensionRatio="H,4:3"
这是我的设计和作品perfectly.I有一些设计喜欢你的设计,但我决定改变我的方式以获得更好的结果。
我有一个 activity 在 nestedScrollView 内的线性布局内包含 viewPager,我在 viewPager 内和每个 recyclerView 内有 3 个片段 问题是 viewPager 没有占用片段的宽度,所以当我滚动 recyclerView 时它滚动正常但在 activity 的特定部分 我不知道如何正确描述这个问题,但我会插入一些图像和代码来显示问题
1- 滚动前
2- 在父级中滚动 nestedScrollView 时 activity
3- 在 viewPager 中滚动片段时
所以我想当我滚动时,选项卡将滚动到工具栏之后 我已经尝试了很多解决方案,但都没有用
这是parentActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<data>
<variable
name="presenter"
type="qatar2022.com.ramiissa.components.Profile.FriendProfile.Root.FriendProfilePresenter" />
</data>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/friend_profile_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fillViewport="true"
android:background="@android:color/white">
<android.support.design.widget.AppBarLayout
android:id="@+id/friend_profile_app_bar_layout"
android:layout_width="match_parent"
android:layout_height="250dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/friend_profile_collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Title"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:titleEnabled="false">
<ImageView
android:id="@+id/friend_profile_cover"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:src="@drawable/cover"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/friend_profile_tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:contentInsetStartWithNavigation="0dp"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/friend_profile_nested_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/friend_profile_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:text="Martha Harris"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"
android:textColor="@color/grey_90" />
<TextView
android:id="@+id/friend_profile_user_friend_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/spacing_large"
android:layout_marginTop="@dimen/spacing_large"
android:layout_marginRight="@dimen/spacing_large"
android:gravity="center"
android:text="5000 Friends"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
android:textColor="@color/grey_60" />
<TextView
android:id="@+id/friend_profile_user_some_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/spacing_large"
android:layout_marginTop="@dimen/spacing_large"
android:layout_marginRight="@dimen/spacing_large"
android:gravity="center"
android:text="Some info"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Subhead"
android:textColor="@color/black" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_large"
android:orientation="horizontal">
<Button
android:id="@+id/friend_profile_user_message_button"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:background="@drawable/btn_rounded_primary"
android:drawableStart="@drawable/message"
android:drawableTint="@color/white"
android:paddingStart="20dp"
android:paddingEnd="15dp"
android:text="MESSAGE"
android:textColor="@color/white" />
<Button
android:id="@+id/friend_profile_friend_button"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:background="@drawable/btn_rounded_blue_gray"
android:drawableStart="@drawable/friend"
android:drawableTint="@color/white"
android:paddingStart="20dp"
android:paddingEnd="15dp"
android:text="ADD FRIEND"
android:textColor="@color/white" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/flag_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_nationality"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_nationality_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Syria"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/birthday_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_birthday"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_birthday_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="10-NOVEMBER"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/relationship_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_relationship"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_relationship_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Single"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_gravity="center_vertical"
app:srcCompat="@drawable/work_icon" />
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="@string/profile_working"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=":"
android:textSize="@dimen/profile_bottom_info_text_size" />
<TextView
android:id="@+id/friend_profile_work_value_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Android Developer"
android:textSize="@dimen/profile_bottom_info_text_size" />
</LinearLayout>
<android.support.design.widget.TabLayout
android:id="@+id/friend_profile_tab_layout"
style="@style/ProfileTabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@color/grey_300"
android:clipToPadding="false"
android:visibility="visible"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/pale_white" />
<android.support.v4.view.ViewPager
android:id="@+id/friend_profile_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/friend_profile_user_photo"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/example"
app:civ_border_color="@color/white"
app:civ_border_width="1dp"
app:layout_anchor="@+id/friend_profile_app_bar_layout"
app:layout_anchorGravity="bottom|center" />
</android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.SwipeRefreshLayout>
你能测试我的建议吗?请将 TabLayout 和 ViewPager 放在 NestedScrollView 之外,并在 parent layout.Of 的每个片段布局中使用 NestedScrollView 当然,您可以将页面 header 部分放置并通过包含标签在 CollapsingToolbarLayout 中使用它但是测试第一个建议。
在主布局中:
<AppBarLayout>
<CollapsingToolbarLayout android:fitsSystemWindows="true">
<include layout="include_header" />
<Toolbar />
</CollapsingToolbarLayout>
</AppBarLayout>
<ViewPager />
在include_header部分:
<FrameLayout android:fitsSystemWindows="true">
<ConstraintLayout />
</FrameLayout>
我在背景图像的约束布局中使用比例 header: 应用程序:layout_constraintDimensionRatio="H,4:3"
这是我的设计和作品perfectly.I有一些设计喜欢你的设计,但我决定改变我的方式以获得更好的结果。