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