5

Mam RecyclerView, który zawiera element wielowierszowy EditText jako element listy, EditText rozwija się za każdym razem, gdy linia zostanie dodana. Model RecyclerView ma standardowy pionowy adapter LinearLayoutManager i standardowy adapter RecyclerView.Adapter<RecyclerView.ViewHolder> z 15 elementami listy EditText. Dodam kod na końcu pytania.Multiline EditText w RecyclerView problemy z przewijaniem

Problem polega na tym, że po dodaniu liczby linii do EditText, rozpoczyna się przewijanie listy za każdym razem, gdy linia zostanie dodana. Ostatecznie, po dodaniu wystarczającej liczby nowych linii, EditText zostanie przewinięty z góry ekranu i straci ostrość. Jeśli spróbujesz przewinąć w górę i wybrać ostatnią linię z EditText, przewinie listę z powrotem, aż EditText znajdzie się poza górną częścią ekranu i utraci ostrość.

To nie jest problem dla ListView, tylko dla RecyclerView.

Czy ktoś wie, jak rozwiązać ten problem?

Element zamówienia:

<EditText xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textMultiLine|textCapSentences" 
     android:gravity="top" 
     android:hint="Enter text" 
     android:minLines="2" 
     android:layout_margin="16dp"/> 

RecyclerViewFragment i Adapter

public class RecyclerViewFragment extends Fragment 
{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View view = inflater.inflate(R.layout.recycler_view_fragment, container, false); 

     RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); 
     recyclerView.setAdapter(new MyAdapter()); 
     recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

     return view; 
    } 

    private class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> 
    { 
     @Override 
     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
     { 
      View view = getActivity().getLayoutInflater().inflate(R.layout.edit_text_list_item, parent, false); 

      MyViewHolder holder = new MyViewHolder(view); 
      return holder; 
     } 

     @Override 
     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) 
     { 

     } 

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

     private class MyViewHolder extends RecyclerView.ViewHolder 
     { 

      public MyViewHolder(View itemView) 
      { 
       super(itemView); 
      } 
     } 
    } 
} 

Odpowiedz

3

Ten problem został rozwiązany przez najnowszą wersją RecyclerView: 22.2.0