2

У меня есть вкладка. Есть две вкладки. Единственное различие между вкладками 1 и вкладкой 2 заключается в том, что вкладка 1 имеет кнопку плавающего действия, вкладка 2 не получена.Использование плавающей кнопки действия, разворачивание макета обновления и расположение координатора и макет панели инструментов Поведение вместе

в табе 1:

  • При прокрутке вниз зрения ресайклера, панель инструментов и кнопка плавающих действий должны исчезнуть.
  • Когда пользователь просматривает представление ресайклера, появляется панель инструментов и кнопка плавающего действия.

в Tab 2:

  • При прокрутке вниз зрения ресайклера, панель инструментов должна исчезнуть.
  • Когда пользователь просматривает представление ресайклера, появляется панель инструментов.

Вкладка 2 работает отлично, без проблем на вкладке 2. Но вкладка 1 работает неправильно. При прокрутке списка ресайклеров панель инструментов не исчезает. При прокрутке просмотра ресайклера панель инструментов не отображается. Кроме того, вкладка 1 не отображает всю страницу. В просмотре ресайклера имеется 40 элементов, но на вкладке 1 показано 39 элементов. И он не показывает все кнопки с плавающим действием.

Я думаю, что причиной этой проблемы является расположение координатора в файле fragment_tab1.xml. Потому что, когда я удаляю его, панель инструментов исчезает и появляется при прокрутке. Но кнопка плавающего действия не исчезает и появляется при прокрутке.

Вот видео: http://sendvid.com/hyaorcss

activity_main.xml:

<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="com.example.fab.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways|snap" 
      app:popupTheme="@style/AppTheme.PopupOverlay"/> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabLayout" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:tabIndicatorColor="@android:color/white" 
      app:tabSelectedTextColor="@android:color/white" 
      app:tabGravity="fill" 
      app:layout_collapseMode="pin" /> 

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

    <include layout="@layout/content_main" /> 

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

content_main.xml:

<RelativeLayout 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:paddingLeft="6dp" 
    android:paddingRight="6dp" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.example.fab.MainActivity" 
    tools:showIn="@layout/activity_main"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
</RelativeLayout> 

fragment_tab1.xml:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

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

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

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="16dp" 
     android:src="@android:drawable/ic_dialog_email" 
     app:layout_anchor="@id/tab1RecyclerView" 
     app:layout_behavior="com.example.fab.ScrollAwareFABBehavior" 
     app:layout_anchorGravity="bottom|right|end" 
     android:id="@+id/emailFab"/> 

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

фрагмент _tab2.xml:

<android.support.v4.widget.SwipeRefreshLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/tab2SwipeRefreshLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <android.support.v7.widget.RecyclerView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/tab2RecyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical" 
     android:clickable="true" /> 

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

ответ

0

Решено.

Я использовал FloatingActionButton в файле activity_main.xml, а не в файле fragment_tab1.xml.

Я сделал ViewPager статическим в основном действии, и я использовал его в своем классе ScrollAwareFABBehavior.

деятельность_main.XML:

<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="com.example.fab.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways|snap" 
      app:popupTheme="@style/AppTheme.PopupOverlay"/> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabLayout" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:tabIndicatorColor="@android:color/white" 
      app:tabSelectedTextColor="@android:color/white" 
      app:tabGravity="fill" 
      app:layout_collapseMode="pin" /> 

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

    <include layout="@layout/content_main" /> 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="16dp" 
     android:src="@android:drawable/ic_dialog_email" 
     app:layout_anchor="@id/tab1RecyclerView" 
     app:layout_behavior="com.example.fab.ScrollAwareFABBehavior" 
     app:layout_anchorGravity="bottom|right|end" 
     android:id="@+id/emailFab"/> 
</android.support.design.widget.CoordinatorLayout> 

content_main.xml:

<android.support.v4.view.ViewPager 
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:id="@+id/viewPager" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context=".MainActivity" 
tools:showIn="@layout/activity_group_timeline"/> 

fragment_tab1.xml:

<android.support.v4.widget.SwipeRefreshLayout 
android:id="@+id/tab1SwipeRefreshLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

fragment_tab2.xml:

<android.support.v4.widget.SwipeRefreshLayout 
android:id="@+id/tab2SwipeRefreshLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

ScrollAwareFABBehavior.java:

public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior { 

public ScrollAwareFABBehavior(Context context, AttributeSet attrs) { 
    super(); 
} 

@Override 
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, 
            View directTargetChild, View target, int nestedScrollAxes) { 

    return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL || 
      super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, 
        nestedScrollAxes); 
} 

@Override 
public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, 
          View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { 
    super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, 
      dyUnconsumed); 

    if(MainActivity.viewPager.getCurrentItem() == 0){ 

     if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { 
      child.hide(); 
     } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) { 
      child.show(); 
     } 

    } 

} 
} 
0

Для разрушающейся панели инструментов, вы, кажется, отсутствует разборный макет панели инструментов. Это выглядит примерно так:

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/app_bar_height" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     ... 

Вы должны проверить это действительно хороший app example демонстрирующего дизайн материала. Он выполняет много того, что вы пытаетесь сделать.

+0

я добавил рушится расположение панелей инструментов, но это не сработало. Ничего не изменилось. – cimenmus

Смежные вопросы