12

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

Может кто-нибудь мне помочь?

Link to gif with problem

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

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:elevation="1dp" 
    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" 
     android:elevation="1dp" 
     android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:layout_scrollFlags="scroll|enterAlways" /> 


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

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/activity_main_swipe_refresh_layout" 
     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/cities_list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

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

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

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end|bottom" 
    android:layout_margin="16dp" 
    android:elevation="1dp" 
    android:onClick="addCity" 
    android:src="@drawable/ic_plus_white_36dp" 
    app:borderWidth="0dp" /> 

+0

Возможный дубликат [Android: CollapsingToolbarLayout и SwipeRefreshLayout застревают] (http://stackoverflow.com/questions/30779667/android-collapsingtoolbarlayout-and-swiperefreshlayout-get-stuck) –

+1

[Это исправлено в Support Library v23.1.1 без каких-либо обходных решений] (http://stackoverflow.com/a/33776549/383414) –

ответ

14

Update: Эта ошибка была исправлена ​​в версии 23.1.1 библиотеки поддержки

Вы можете установить onOffsetChanged слушателя для AppBarLayout и предотвратить красть обновление до смещения макета AppBarLayout 0.

Это go спосо пример: https://gist.github.com/blackcj/001a90c7775765ad5212

+0

это работает Благодарю. –

+0

Обратите внимание, что эта ошибка была исправлена ​​в последней версии библиотеки поддержки (23.1.1 IIRC). –

+1

Я столкнулся в '22.2.0' также –

0

мне это удалось, добавив следующую реализацию OnOffsetChangedListener в фрагменте:

@Override 
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
    if (collapsingToolbarLayout.getHeight() + verticalOffset < 2 * ViewCompat.getMinimumHeight(collapsingToolbarLayout)) { 
     swipeRefreshLayout.setEnabled(false); 
    } else { 
     swipeRefreshLayout.setEnabled(true); 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    appBarLayout.addOnOffsetChangedListener(this); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    appBarLayout.removeOnOffsetChangedListener(this); 
} 

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

  • Нет связанных вопросов^_^