2016-08-27 36 views
9

現在のオプションはViewsまたは古いListViewに依存しているので、私のアプリケーションのホイールピッカーを実装しようとしていますので、RecyclerViewのソリューションをベースにしたいと思います。私が今までやったRecyclerViewで選択したアイテムを垂直に中央に配置する

は、最初と最後の項目を上下にRecyclerViewに集中されるようにPADDING_TYPEという名前の、異なるタイプの開始時およびの終わりに設定しました。

recyclerView.post(new Runnable() { 
    @Override 
    public void run() { 
     //80dp is the height of a regular list item 
     int paddingHeight = ((recyclerView.getHeight()-SettingsManager.dptopixels(80))/2); 
     binding.getRoot().getLayoutParams().height = paddingHeight; 
    } 
}); 

ここでは、選択した項目を垂直に中央に維持する方法を理解しようとしています。

私がこれまで試したどのような:予想通り

LinearSnapHelper helper = new LinearSnapHelper(); 
helper.attachToRecyclerView(mRecyclerView); 

の1- LinearSnapHelperが動作しない、私も(おそらく間違った方法で)いくつかのメソッドをオーバーライドしようとしたが、私ができます自動的に選択範囲を垂直方向に中央にします。そしてそれは十分にうまくいっていない、選択された項目は、垂直の中心にロックされるのではなく、 "移動"。 Iコードを適応させる試み

2-カスタムRecyclerView.OnScrollListener

は、垂直スクロール差と

allPixelsDate += dx; 

RecyclerView.OnScrollListenerこの行を変更することにより、水平方向のスクロールを使用するhereを提案:

allPixelsDate += dy; 

この実装nはリストの垂直中心に最も近い項目を選択するが、中心にロックすることはないため、近い位置にいる。

このような結果を得ることは可能でしょうか?どうやって?

もっと明確にするために、私はhereを1:10とした結果を得たいと思います。選択は中央でロックされます。

+0

参考文献[link](http://developer.samsung.com/s-pen-sdk/samples/Circle-Launcher) – Moinkhan

+0

私はこれをhttps://github.com/ai212983/で行っています。 android-spinnerwheelと私はあなたが垂直Mannner https://github.com/Jaouan/Carousel-Browsing-Example – Nepster

+0

でこれを必要と思うこれを達成するために垂直にこのメソッドを使用することができます[これを開く](http://stackoverflow.com/a/38411582/2587027) – wadali

答えて

10

RecyclerViewでLinearSnapHelperとsetOnFlingListener(snapHelper)メソッドを使用するだけで済みます。

これは実施例である:

LinearSnapHelper snapHelper = new LinearSnapHelper(); 
snapHelper.attachToRecyclerView(recyclerView); 
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
recyclerView.setOnFlingListener(snapHelper); 

また、あなたの車のためのいくつかのスキンを追加し、正確に行とRecyclerViewの高さの高さを計算する必要があります実際のホイールピッカーを取得するには。たとえば、ホイールに3行しか表示しない場合は、RecyclerViewの高さを行の高さの3倍にする必要があります。

+1

あなたが提案したアプローチを試しましたが、試行番号** 1 **と同じように動作するようです。私が達成しようとしているのは、スクロール効果の除去です。スクロールによって行の内容を更新する必要がありますが、行は移動してはいけません。 'LinearSnapHelper'では、ちょうど定期的にスクロールし、親の中心(' RecyclerView')の中央に子をスナップしようとします。私が何を意味しているかをよりよく理解するには、https://www.youtube.com/watch?v=rercnPOELvs 1:10 – Vektor88

+0

@ Vektor88をご覧ください。ユーザーは選択したアイテムをどのように変更しますか?逃げるかどうか? – lobzik

+0

はい、ビデオを見てください。私は飛行だけで行の更新とスクロールの動きが発生しないようにしたい。 – Vektor88

関連する問題