1

私はツールバーを使わずに(ツールバーの代わりにドロップダウン要素になりますが、基本的にLinearLayoutを下に持つRelativeLayoutですリストビューをスクロールしているときに要素ビューを外す

私はツールバーの折りたたみを実装し、ドロップダウンをツールバー内に置くことを考えましたが、それはおそらく良い考えではありません私はアプリでもActionBarを使用していますので、ツールバーへの移行は非常に時間がかかるでしょう。それに付随するすべての技術的な問題は言及していません。

リストビューで動き/スクロールの方向を検出してからドロップダウンして表示することを考えましたが、単にリストビューで指を保持すると非常にバグがあります指を持ち上げるまでは上から下へ、またはその逆へと非常に迅速に戻り、停止しません)。

この種の動作を実装する他のオプションはありますか? enter image description here

答えて

0

ListViewのデフォルト値はscrollListenerです。あなたはそれがスクロールしているかどうかを知るためにそれを使うことができます。ドロップダウンを隠す!

 listView.setOnScrollListener(new AbsListView.OnScrollListener() { 
        @Override 
        public void onScrollStateChanged(AbsListView absListView, int i) { 

    //detect stop. have a counter then view the dropDown 

        } 

        @Override 
        public void onScroll(AbsListView absListView, int i, int i1, int i2) { 

    //Hide dropDown 

@Override 
     public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 

      if(mLastFirstVisibleItem<firstVisibleItem) 
      { 
       Log.i("SCROLLING DOWN","TRUE"); 
      } 
      if(mLastFirstVisibleItem>firstVisibleItem) 
      { 
       Log.i("SCROLLING UP","TRUE"); 
      } 
      mLastFirstVisibleItem=firstVisibleItem; 

     } 
        } 
       }); 
+0

私は方向を知る必要があります。それ以外の場合は、ドロップダウンを表示するために非表示にするかどうかわかりません – BVtp

+0

大丈夫、funtionality賢明に動作します。しかし、私のコラプス化/ドロップダウン要素の拡張のアニメーションでも、それは消えるように見えて、突然現れます。もっとスムーズにする方法の例を教えてください。崩壊しているツールバーのように – BVtp

+0

アニメーションを使用する - http://stackoverflow.com/questions/23925907/slidedown-and-slideup-layout-with-animation-android – lesniak

0

私は他の人が何を提案しているのかとても興味があります。 Finnaly私はリストビューで動き/スクロールの方向を検出していて、ヘッダを隠す/表示します(あなたが言及したように)。私はこのようにそれをやった(と私はバグを持っていない):

listView.setOnScrollListener(OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 

      final int currentFirstVisibleItem = view.getFirstVisiblePosition(); 

      if (currentFirstVisibleItem > mLastFirstVisibleItem) header.setVisibility(View.GONE); 
      else if (currentFirstVisibleItem < mLastFirstVisibleItem) header.setVisibility(View.VISIBLE); 

      mLastFirstVisibleItem = currentFirstVisibleItem; 
     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     } 
    }); 

私は最後は私がアニメーションで表示/非表示するには、ヘッダーを作りました。

+0

スクロールを開始すると、1つの場所であなたの指を、持ち上げないでください。あなたが指を持ち上げるまで無限にダウンアップの間で素早く切り替わるのではないですか?それは私の場合でそうする – BVtp

+0

いいえ、それはうまくいく – lesniak

関連する問題