当EditText聚焦时,Android EditText的容器(RecyclerView)自动滚动

问题描述:

我得到了一个RecyclerView,其元素包含一个EditText小部件。当EditText聚焦时,Android EditText的容器(RecyclerView)自动滚动

1.当前关注第二个EditText,第一个EditText部分显示在屏幕上。 the first EditText is partly showed

2.当点击第一个EditText时,它会得到焦点,然后RecyclerView会自动向下滚动以充分显示第一个EditText。 RecyclerView automatically scroll down when first EditText got focused

这是伟大的,但我想要的是RecyclerView不应该自动滚动。 任何解决方案? 谢谢!

+0

将此代码添加到您的活动中声明您的清单 - > android:windowSoftInputMode =“stateVisible | adjustPan –

+0

它不起作用,实际上我想要的是recyclerview根本不滚动,或者告诉我scrollX和scrollY何时它自动滚动,但它似乎不会通知任何已注册的RecyclerView.OnScrollListener当它在这种情况下滚动!这导致我大问题......我使用:com.android.support:recyclerview- V7:22+ –

我最终通过禁用RecyclerView从滚动来修复它,除非它接收到触摸事件。

首先,我定制一个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; 
    } 

时收到click事件: 我设置水平和垂直为false,这些原因RecyclerView不能滚动任何更多!

,我子类recyclerView和覆盖的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); 
} 

所以MyRecyclerView不能滚动时点击发现焦点孩子是一个EditText。但是当接收触摸事件时它可以滚动!