在Android中实现列表滚动,其中指定条目滑动到顶端时,悬浮在顶端,其他条目依然正常滑动。如下图:
通过监听recyclerview滚动,根据recyclerview的滑动距离确定悬浮view的位置,实现条目悬浮。
final TextView tvStickyHeaderView = (TextView) findViewById(R.id.tv_sticky_header_view); recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); View stickyInfoView = recyclerView.findChildViewUnder( tvStickyHeaderView.getMeasuredWidth() / 2, 5); if (stickyInfoView != null && stickyInfoView.getContentDescription() != null) { tvStickyHeaderView.setText(String.valueOf(stickyInfoView.getContentDescription())); } View transInfoView = recyclerView.findChildViewUnder( tvStickyHeaderView.getMeasuredWidth() / 2, tvStickyHeaderView.getMeasuredHeight() + 1); if (transInfoView != null && transInfoView.getTag() != null) { int transViewStatus = (int) transInfoView.getTag(); int dealtY = transInfoView.getTop() - tvStickyHeaderView.getMeasuredHeight(); if (transViewStatus == StickyExampleAdapter.HAS_STICKY_VIEW) { if (transInfoView.getTop() > 0) { tvStickyHeaderView.setTranslationY(dealtY); } else { tvStickyHeaderView.setTranslationY(0); } } else if (transViewStatus == StickyExampleAdapter.NONE_STICKY_VIEW) { tvStickyHeaderView.setTranslationY(0); } } } });