2014-11-08 4 views
8

Я создал очень простой пример RecyclerView.Полоса прокрутки RecyclerView возвращается к началу после первого элемента

Планировка:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MyActivity"> 

    <android.support.v7.widget.RecyclerView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical"/> 

</RelativeLayout> 

активность:

public class MyActivity extends Activity { 

    RecyclerView mRecyclerView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my); 

     mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
     mRecyclerView.setAdapter(new TestAdapter()); 
     mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    } 

    public static class TestAdapter extends RecyclerView.Adapter<TestAdapter.ViewHolder> { 
     @Override 
     public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
      View view = LayoutInflater.from(viewGroup.getContext()).inflate(android.R.layout.simple_list_item_1, viewGroup, false); 
      return new ViewHolder(view); 
     } 

     @Override 
     public void onBindViewHolder(ViewHolder viewHolder, int i) { 
      viewHolder.tv.setText("Row " + (i + 1)); 
     } 

     @Override 
     public int getItemCount() { 
      return 30; 
     } 

     public static class ViewHolder extends RecyclerView.ViewHolder { 

      TextView tv; 

      public ViewHolder(View itemView) { 
       super(itemView); 
       tv = (TextView) itemView.findViewById(android.R.id.text1); 
      } 
     } 
    } 
} 

Теперь, когда я прокручиваю за пределы первого пункта прокрутки подскакивает назад к вершине, а затем продолжается в обычном режиме. Вторая проблема - когда я прокручиваю нижнюю часть, полоса прокрутки останавливается до начала. Это ошибка в lib или моей собственной ошибке?

+0

Такая же проблема. – EyesClear

+0

Кажется, это ошибка: https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=scrollbar&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort= & id = 78545 – Kuno

+0

Попытайтесь использовать библиотеку recyclerview v7 https://developer.android.com/tools/support-library/features.html#v7 и посмотреть, есть ли у вас такая же ошибка. Подумайте, что это не окончательная версия, и команда Android заявила, что есть некоторые вещи, которые им еще предстоит исправить. – vovahost

ответ

4

Как указано here, эта ошибка была исправлена ​​в новой версии библиотеки поддержки v21.0.2.

2

Для меня проблема возникла из-за того, что высота просмотров элементов списка элементов была равна wrap_content. Меняя его на match_parent, я исправил его для меня.