10

tôi gặp rất nhiều vấn đề liên quan với vấn đề của tôi nhưng không ai tôi thấy muốn hành vi của tôi đang tìm kiếm.AppBarLayout + TabLayout + CollapsingToolbarLayout + SwipeToRefresh

Tôi muốn một máy nhắn tin xem với các tab và thanh ứng dụng, khi các đoạn có thể cuộn và cuộn (về phía dưới), tôi muốn thanh ứng dụng biến mất nhưng để lại các tab, khi cuộn về phía trên, để lại apear . một số các mảnh này chứa một Layout SwipeToRefresh (đôi khi nó gây ra vấn đề). Tôi đã thử nhiều cấu hình luôn để lại điều gì đó sai.

cho bây giờ tôi không có tác dụng sụp đổ (nó luôn luôn ẩn)

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".MainPagerActivity"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|enterAlways"> 


      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       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" 
       app:tabGravity="fill" 
       app:tabIndicatorHeight="6dp" 
       app:tabMode="fixed" /> 

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


    <android.support.v4.view.ViewPager 
     android:id="@+id/main_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/app_bar_layout" 
     tools:context=".MainPagerActivity" 

     /> 

</RelativeLayout> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/ic_menu_edit" /> 

và một trong những mảnh vỡ của tôi (các di chuyển một ô):

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:wheel="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.m360learning.app.fragment.MainPagerNewsFeed"> 


    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <com.pnikosis.materialishprogress.ProgressWheel 
       android:id="@+id/progress_wheel" 
       android:layout_width="80dp" 
       android:layout_height="80dp" 
       android:layout_centerHorizontal="true" 
       android:layout_centerVertical="true" 
       wheel:matProg_barColor="#5588FF" 
       wheel:matProg_progressIndeterminate="true" /> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/recycler" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:scrollbars="vertical" /> 

     </RelativeLayout> 

    </android.support.v4.widget.SwipeRefreshLayout> 

</FrameLayout> 

tôi don 't biết chính xác những gì tôi đã làm nhưng từ khi tôi bắt đầu viết câu hỏi này refreshLayout ngăn chặn Danh sách của tôi từ đi lên (nó làm mới thay) ..

Cảm ơn

------ Chỉnh sửa!

nhờ Sir Ellie Zou, bây giờ nó làm việc với xml này:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context=".MainPagerActivity"> 


    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     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" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:layout_collapseMode="pin" 
       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" 
       app:tabGravity="fill" 
       app:tabIndicatorHeight="6dp" 
       app:tabMode="fixed" /> 

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


    <android.support.v4.view.ViewPager 
     android:id="@+id/main_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".MainPagerActivity" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 

     /> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_menu_edit" /> 


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

và cách bố trí đoạn:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:wheel="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.m360learning.app.fragment.MainPagerNewsFeed"> 


    <com.pnikosis.materialishprogress.ProgressWheel 
     android:id="@+id/progress_wheel" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_gravity="center" 
     wheel:matProg_barColor="#5588FF" 
     wheel:matProg_progressIndeterminate="true" /> 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recycler" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scrollbars="vertical" /> 


    </android.support.v4.widget.SwipeRefreshLayout> 


</FrameLayout> 

Trả lời

11

Nếu bạn không muốn hiệu ứng thị sai, bạn không cần để sử dụng CollapsingToolbarLayout.

Cấu hình quan trọng nhất:

Trong Thanh công cụ, đặt app:layout_scrollFlags="scroll|enterAlways".

Trong ViewPager, thiết app:layout_behavior="@string/appbar_scrolling_view_behavior".

Và bố trí nên trông như thế này:

<android.support.design.widget.CoordinatorLayout> 

    <android.support.design.widget.AppBarLayout> 

     <android.support.v7.widget.Toolbar/> 

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

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

    <android.support.v4.view.ViewPager/> 

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

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

Move ProgressWheel ra khỏi SwipeRefreshLayout của bạn để khắc phục vấn đề của bạn mà SwipeRefreshLayout không thể làm mới.

+0

Tuyệt vời! Tôi cập nhật bài viết của tôi, cảm ơn bạn rất nhiều! –

+0

Oups xin lỗi, tôi không để ý nhưng swipeToRefresh được stille bị phá vỡ, bất kỳ ý tưởng? –

+0

cố gắng di chuyển 'ProgressWheel' ra khỏi' SwipeRefreshLayout' –

Các vấn đề liên quan