私はこの時点で、nestedscrollview
に取り組んでいます。それは単一の子RelativeLayout
を含んでいます。ここに擬似コードがあります。スティッキーTextViewを一番上にスクロールして表示領域の一番上にスクロール
<NestedScrollView>
<RelativeLayout>
<TextView /> //text A
<CalendaerView />
<TextView /> //id = date_string //shows a date string
<RecyclerView /> //list of events
<RelativeLayout>
</NestedScrollView>
アイデアは、下方スクロールを行いながら、全体のビューは通常のスクロールべきであるが、日付列TextView
が可視領域の上部に達すると、それは、さらに下にスクロールするための上に滞在しなければなりません。それが上向きにスクロールされたときしかし、私は私がnestedscrollview
ためにスクロールリスナーを試してみましたが、nestedscrollview
外の別のtextview
を作成し、visibility
を変更CalendarView
、テキストA.
見ることができるはずです。それはビューの可視性を変更する必要として
<RelativeLayout>
<TextView /> //to mimic date string
<NestedScrollView>
<RelativeLayout>
<TextView /> //text A
<CalendaerView />
<TextView /> //id = date_string //shows a date string
<RecyclerView /> //list of events
<RelativeLayout>
</NestedScrollView>
</RelativeLayout>
ここでスクロールリスナーロジックは実際に
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (isDone && scrollY < oldScrollY) {
//scroll up
int firstVisibleItem = ((LinearLayoutManager) mRecycler.getLayoutManager())
.findFirstVisibleItemPosition();
if(0 == firstVisibleItem) {
textA.setVisibility(View.VISIBLE);
calendarView.setVisibility(View.VISIBLE);
dateString.setVisibility(View.VISIBLE);
dateStringCopy.setVisibility(View.GONE);
}
}
if (scrollY > oldScrollY) {
//scroll down
int dateTop = dateString.getTop();
//check if datestring reaches the top of screen
if(0 >= dateTop - scrollY) {
isDone = false;
textA.setVisibility(View.GONE);
calendarView.setVisibility(View.GONE);
dateString.setVisibility(View.GONE);
dateStringCopy.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
isDone = true;
}
}, 50);
}
}
}
だ、経験は非常に滑らかではありません。誰もこれを解決するためのよりよい方法を持っていますか?
・ホープ[この](https://github.com/emilsjolander/StickyScrollViewItems)あなたが探しているものです。 – Sanoop
私は第三者図書館なしで働いていることを理解しようとしていました。しかし、ええ、ここに行きます。私はそれを私のユースケースに変更します。ありがとう! – Renjith