5

Ich habe eine RecyclerView, die eine mehrzeilige EditText als Listenelement enthält, erweitert die EditText jedes Mal, wenn eine Zeile hinzugefügt wird. Die RecyclerView hat eine Standardvertikale LinearLayoutManager und eine Standard RecyclerView.Adapter<RecyclerView.ViewHolder> Adapter mit 15 der EditText Listenelemente. Ich füge den Code am Ende der Frage hinzu.Multiline EditText in RecyclerView Blättern Probleme

Das Problem ist, dass nach dem Hinzufügen einer Anzahl von Zeilen zu EditText, beginnt die Liste jedes Mal nach unten, wenn eine Zeile hinzugefügt wird. Schließlich, nachdem Sie genug neue Zeilen hinzugefügt haben, wird der EditText vom oberen Rand des Bildschirms gescrollt und verliert den Fokus. Wenn Sie versuchen, rückwärts zu scrollen und die letzte Zeile des EditText auszuwählen, wird die Liste wieder nach unten verschoben, bis EditText nicht mehr auf dem Bildschirm angezeigt wird und der Fokus verloren geht.

Dies ist kein Problem für ListView, nur für RecyclerView.

Kann jemand dieses Problem beheben oder umgehen?

Die Position:

<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"/> 

Der RecyclerViewFragment und 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); 
      } 
     } 
    } 
} 

Antwort

3

Dieses Problem wurde durch die neueste Version des RecyclerView behoben: 22.2.0

Verwandte Themen