2016-06-17 4 views
1

私のアプリケーションでは、リストがスクロールしているときにツールバーを非表示にしたい。リンクの下/非表示を表示する方法を、この中で説明したように私の意見では、私はすべてを実装:ツールバーを隠す/表示する

https://mzgreen.github.io/2015/06/23/How-to-hideshow-Toolbar-when-list-is-scrolling%28part3%29/

を問題は、リストがスクロールされたときに、ツールバーが隠れ/動いていない、です。ここで

は.xmlファイルのコードです:ここで

<?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" 
    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:theme="@style/ThemeOverlay.AppCompat.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary" 
      android:minHeight="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:titleTextColor="@android:color/white" /> 
    </android.support.design.widget.AppBarLayout> 

    <se.emilsjolander.stickylistheaders.StickyListHeadersListView 
     android:id="@+id/lvRef" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
</android.support.design.widget.CoordinatorLayout> 

は依存関係がある:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'se.emilsjolander:stickylistheaders:2.7.0' 
    compile 'com.android.support:recyclerview-v7:23.4.0' 
    compile 'com.android.support:cardview-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 
} 

答えて

2

残念ながら、ネストされたスクロールをListViewで処理する方法はありません。 固定ヘッダーRecyclerViewを代わりに使用してください。

1

あなたがダウンし、スクロールのツールバーを非表示にしたい場合は、最初にあなたのスクロールdyを検出しますListViewまたはRecyclerViewを呼び出す前に、ツールバーからactionBarオブジェクトを取得します。ツールバーのレイアウトでは

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 

    //in on scroll listener of your view check for dy 

    if (dy > 0) { 
     //detecting scroll up action 
     toolbar.setVisibility(View.GONE); 
    } else { 
     //detect scrolldown action dy<0 
     toolbar.setVisibility(View.VISIBLE); 
    } 
1

代わりandroid:layout_height="wrap_content" の使用android:layout_height="?attr/actionBarSize"やツールバーを再び表示するには、あなたがその

toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start(); 

のように行うことができますツールバーを非表示にするにはandroid:minHeight="?attr/actionBarSize"

0

を削除このようにする

toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start(); 
関連する問題