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);
}
}
}
}