RecyclerView полоса прокрутки отстает
Когда я использовал новый вид recycler, я заметил, что полоса прокрутки не такая текучая, как в обычном ScrollView/ListView. Похоже, что он не распознает, когда вы прокручиваете элемент адаптера, но он изменяется только при появлении нового элемента / исчезновении старого элемента, поэтому панель прогресса прыгает вместо плавного перемещения. это видео , демонстрирующее эту проблему.
Есть ли способ сделать его гладким?
Мой расположение:
<android.support.v7.widget.RecyclerView
android:id="@+id/listRecycler"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Фрагмент:
mListRecycler.setAdapter(mAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mListRecycler.setLayoutManager(layoutManager);
Адаптер:
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
private List<News> items;
private int itemLayout;
public NewsAdapter(List<News> items, int itemLayout) {
this.items = items;
this.itemLayout = itemLayout;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
v.setOnClickListener(this);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
News item = items.get(position);
holder.text.setText(item.getTitle());
holder.itemView.setTag(item);
}
@Override
public int getItemCount() {
return items.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
@InjectView(R.id.title)
TextView text;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.inject(this, itemView);
}
}
}
2 ответов:
Это проблема в предварительном выпуске L. LinearLayoutManager не имелподдержки гладких полос прокрутки . Будет исправлено, когда RecyclerView будет выпущен.
RecyclerView также использует высоту (если ориентация вертикальная или ширину, если горизонтальная) для вычисления высоты (или ширины) полосы прокрутки. Если ваш элемент списка имеет одинаковую высоту (или ширину), то рассмотрите возможность использования setHasFixedSize ().
mRecyclerList.setHasFixedSize(true);
Comments