2017-04-10 96 views
2

根据以下评论,我更改了我的layout。它正在工作,但是当我到达recyclerview中的项目底部并尝试向上滚动时,它仅上升到recyclerview的开头。我必须再次滚动才能到达header带有CoordinatorLayout和AppBarLayout的Recyclerview

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/white"> 

     <android.support.constraint.ConstraintLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      app:layout_scrollFlags="scroll"> 

      <de.hdodenhof.circleimageview.CircleImageView 
       android:id="@+id/iv_profile" 
       android:layout_width="70dp" 
       android:layout_height="70dp" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_centerVertical="true" 
       android:layout_marginLeft="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="15dp" 
       android:gravity="center_vertical" 
       android:src="@drawable/ap_placeholder" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintTop_toTopOf="parent"/> 

      <TextView 
       android:id="@+id/tv_profile_name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="25dp" 
       android:text="@string/profile_name" 
       app:layout_constraintLeft_toRightOf="@+id/iv_profile" 
       app:layout_constraintTop_toTopOf="parent"/> 

      <TextView 
       android:id="@+id/tv_username" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="8dp" 
       android:layout_marginStart="8dp" 
       android:layout_marginTop="8dp" 
       android:text="@string/username" 
       android:textStyle="bold" 
       app:layout_constraintLeft_toRightOf="@+id/iv_profile" 
       app:layout_constraintTop_toBottomOf="@+id/tv_profile_name"/> 

      <ImageView 
       android:id="@+id/iv_settings" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="16dp" 
       android:layout_marginRight="16dp" 
       android:layout_marginTop="33dp" 
       android:contentDescription="@string/settings_content_description" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toTopOf="parent" 
       app:srcCompat="@drawable/ap_settings"/> 

      <TextView 
       android:id="@+id/tv_profile_description" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="16dp" 
       android:layout_marginLeft="16dp" 
       android:layout_marginRight="16dp" 
       android:layout_marginStart="16dp" 
       android:layout_marginTop="8dp" 
       android:ellipsize="end" 
       android:maxLines="2" 
       android:text="@string/profile_description" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/iv_profile"/> 

      <View 
       android:id="@+id/view" 
       android:layout_width="0dp" 
       android:layout_height="1dp" 
       android:layout_marginTop="20dp" 
       android:background="@color/light_grey" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/tv_profile_description"/> 

      <com.roughike.bottombar.BottomBar 
       android:id="@+id/bottom_bar" 
       android:layout_width="0dp" 
       android:layout_height="60dp" 
       android:layout_marginTop="20dp" 
       android:background="@color/light_grey" 
       app:bb_activeTabColor="@color/ap_yellow" 
       app:bb_inActiveTabColor="@color/ap_black" 
       app:bb_tabXmlResource="@xml/profile_bar_tabs" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/tv_followers"/> 

      <TextView 
       android:id="@+id/tv_history" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="50dp" 
       android:layout_marginStart="50dp" 
       android:text="@string/tv_history" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/number_history"/> 

      <TextView 
       android:id="@+id/tv_followers" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/tv_followers" 
       app:layout_constraintLeft_toLeftOf="@+id/tv_history" 
       app:layout_constraintRight_toRightOf="@+id/tv_following" 
       app:layout_constraintTop_toBottomOf="@+id/number_followers"/> 

      <TextView 
       android:id="@+id/tv_following" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="40dp" 
       android:layout_marginRight="40dp" 
       android:text="@string/tv_following" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/number_following"/> 

      <TextView 
       android:id="@+id/number_history" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="20dp" 
       android:text="@string/test_history" 
       android:textStyle="bold" 
       app:layout_constraintEnd_toEndOf="@id/tv_history" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintStart_toStartOf="@id/tv_history" 
       app:layout_constraintTop_toBottomOf="@+id/view"/> 

      <TextView 
       android:id="@+id/number_followers" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="20dp" 
       android:text="@string/test_followers" 
       android:textStyle="bold" 
       app:layout_constraintLeft_toLeftOf="@+id/number_history" 
       app:layout_constraintRight_toRightOf="@+id/number_following" 
       app:layout_constraintTop_toBottomOf="@+id/view"/> 

      <TextView 
       android:id="@+id/number_following" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="20dp" 
       android:text="@string/test_following" 
       android:textStyle="bold" 
       app:layout_constraintEnd_toEndOf="@id/tv_following" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintStart_toStartOf="@id/tv_following" 
       app:layout_constraintTop_toBottomOf="@+id/view"/> 


     </android.support.constraint.ConstraintLayout> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/rv_grid" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="none" 
     android:visibility="visible" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

</android.support.design.widget.CoordinatorLayout> 

+0

根据我的建议,在点击按钮时用所需的布局初始化新的适配器对象。 –

+0

@RahulSharma但是我怎么会仍然有'header'? – Esteban

+0

将所需的标题添加到新适配器,因为您现在正在执行 –

回答

1

编辑:

如果您需要确切的Instagram的设计,请看看这个Sample

当你在标签按钮点击,只需使用hide并显示vi并且把两者分开的布局管理器。

private boolean gridClick = false; 


    case R.id.list_click:      

       if(listClick) {     // Check whether the tab is already clicked or not 

        Log.e("AlreadyClicked", "Test"); 

       } else { 

        Log.e("ClickedFirstTime", "Test"); 

        loadPost(); 

        ivGrid.setVisibility(View.GONE);  // Hiding grid recyclerview 
        ivList.setVisibility(View.VISIBLE); // showing list recyclerview 

        rvGrid.setVisibility(View.GONE);  // Make grid recyclerview as gone 
        recyclerList.setVisibility(View.VISIBLE); // make listview as visible 



        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);  // Use separate layoutmanager for list recyclerview 

        recyclerList.setLayoutManager(mLayoutManager); 
        recyclerList.setItemAnimator(new DefaultItemAnimator()); 
        recyclerList.setAdapter(friendsProfileUserPostitemsAdapter); 

        listClick = true; 


       } 

       break; 
+0

嗯,我无法访问这些列表,因为它们位于不同的活页夹中。根据您的解决方案,我需要在第一个文件夹中隐藏/显示第二个文件夹中的项目。 – Esteban

+0

@Esteban我已经做过instagram设计。你可以简单地用4或5个按钮进行单个活动。只需隐藏并显示相应的视图。您需要像[this]这样的用户协调器布局(http:// stackoverflow。 com/a/40182035/3960700)。不要使用嵌套的滚动视图。它在回收站查看方式不好。 – Steve

+0

@Esteban检查我编辑过的文章。当你运行这个样本时,你可以得到一些清晰的标识。 – Steve

1

我觉得你做错了实现。不需要在RecyclerView项目中添加TabLayout。

你的代码应该是这样的

<android.support.design.widget.CoordinatorLayout> 
    <android.support.design.widget.AppBarLayout> 
      <android.support.design.widget.CollapsingToolbarLayout> 

       <YourHeaderLayout /> 
       <android.support.design.widget.TabLayout />    

      </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

    <RecyclerView /> 
    <!-- OR --> 
    <ViewPager /> 


</android.support.design.widget.CoordinatorLayout> 

这里如果显示RecyclerView那么你需要改变分页上按布局管理。或者您可以将两个RecyclerView与列表和网格在ViewPager

+0

有没有办法做到这一点,而不需要'CollapsingToolbarLayout?'我需要内容滚动 - Instagram的用户个人资料页面 – Esteban

+0

您可以在不使用CollapsingToolbarLayout的情况下使用AppBarLayout,而对于滚动,您可以android.support.v4.widget.NestedScrollView。 –

+0

@Esteban不会收到。您想说关于滚动标题的内容? –

相关问题