6

Wenn ich den EditText in ListView oder RecyclerView berührte, erschien die Soft-Tastatur. Dann klickte ich die nächste Taste auf der Tastatur und der Fokus wechselte zum nächsten EditText. Nach dem letzten sichtbaren EditText wechselt der Fokus zum nächsten EditText, aber ListView oder RecyclerView scrollt nicht nach innen und der gesamte Bildschirm geht unter die Statusleiste, jede Tastaturtaste klickt weiter.Wenn EditText in ListView oder RecyclerView fokussiert ist, funktioniert die Tastatur, aber das Scrollen funktioniert nicht

das folgende XML, die für diesen Bildschirm verwenden wird:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     <include 
      android:id="@+id/MainToolbar" 
      layout="@layout/toolbar" /> 
     <include 
      android:id="@+id/llHeaderItem" 
      layout="@layout/TaskShelfShareHeaderItem" /> 
     <ListView 
      android:id="@+id/lwShelfShare" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:stackFromBottom="true" 
      android:transcriptMode="normal" /> 
    </LinearLayout> 

Screen cast

Antwort

5

ich es dachte, auf diese Weise aus. Ich hoffe es hilft.

mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 

    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     RecyclerView recyclerView = getRecyclerView(); 
     if (recyclerView != null) { 
      int position = getLayoutPosition(); 
      RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForLayoutPosition(position + 1); 
      if (viewHolder == null) { 
       recyclerView.smoothScrollToPosition(position + 1); 
       return true; 
      } 
     } 
     return false; 
    } 
}); 
+0

'getRecyclerView();' nicht –

+0

gefunden @PratikButani Sie haben 'getRecyclerView()' zu implementieren. Er zeigt nur, dass Sie einen Verweis auf Ihre Recycler-Ansicht benötigen. – Antonio

+0

How to 'getRecyclerView();' in der Adapterklasse? @Ivan –