2016-04-21 11 views
2

Ich habe eine RecyclerView, deren Element ein EditText-Widget enthält.Android EditText-Container (RecyclerView) automatisches Scrollen, wenn EditText fokussiert ist

1.Derzeitig wird der zweite EditText fokussiert, der erste EditText wird teilweise auf dem Bildschirm angezeigt.

2. Wenn Sie auf den ersten EditText klicken, wird der Fokus angezeigt, und RecyclerView scrollt automatisch nach unten, um den ersten EditText vollständig anzuzeigen. RecyclerView automatically scroll down when first EditText got focused

Das ist großartig, aber was ich will, ist RecyclerView sollte nicht automatisch scrollen. Irgendeine Lösung? danke!

+0

Fügen Sie dies zu Ihrer Aktivität in Ihrem Manifest deklarieren -> android: windowSoftInputMode = "stateVisible | adjustPan –

+0

Es funktioniert nicht. Eigentlich was ich will ist entweder Recyclerview nicht scrollen überhaupt oder es sagen mir die scrollX und scrollY wann Es scrollt automatisch, aber es scheint, dass es überhaupt keinen registrierten RecyclerView.OnScrollListener benachrichtigen würde, wenn es in diesem Fall scrollt! Das verursacht mir großes Problem ...... Ich benutze: com.android.support:recyclerview- v7: 22+ –

Antwort

1

Ich habe es endlich behoben, indem Sie die RecyclerView vom Scrollen deaktiviert, außer es ein Touch-Ereignis erhalten.

zuerst, ich brauch ein Layoutmanager:

@Override 
public int scrollHorizontallyBy(int dx, RecyclerView.Recycler recycler, RecyclerView.State state) { 

    if(!horizontal) { 
     return 0; 
    } 

@Override 
public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) { 
    if(!vertical) { 
     return 0; 
    } 

wenn Click-Ereignis erhalten: I horizontal und vertikal auf false gesetzt, diese Ursache RecyclerView kann nicht mehr bewegen!

und ich SubClass Die recyclerView und außer Kraft setzen onTouchEvent:

public boolean onTouchEvent(MotionEvent e) { 

    //we enable scrollHorizontallyBy and scrollVerticallyBy only in Touch Event, set layoutManager vertical and horizontal to true 
    ...... 

    return super.onTouchEvent(e); 
} 

so kann MyRecyclerView nicht scrollen, wenn Klick zu finden, dass der Fokus Kind ein EditText ist. Aber es kann blättern, wenn Sie ein Touch-Event erhalten!

Verwandte Themen