samsung - para que sirve java en android
NestedScrollView no se lanza con Recyclerview adentro (5)
Añade esto en tu RecyclerView xml:
android:nestedScrollingEnabled="false"
Tengo un diseño como ese:
<NestedScrollView>
<RecyclerView> // vertical recycler view
<RecyclerView/> // horizontal recycler view
<RecyclerView/>
<RecyclerView/>
...
<RecyclerView>
</NestedScrollView>
El resultado se parece a Google Play Store:
Y deshabilité NestedScrolling en la vista horizontal Recycler
:
horizontalRecyclerView.setHasFixedSize(true);
horizontalRecyclerView.setNestedScrollingEnabled(false);
Mi problema:
La vista de vertical recyclerview
no se desplaza, siempre que ocurre ACTION_UP
, la vista de vertical recyclerview
también detiene el desplazamiento.
¿Cómo puedo anidar vertical recyclerview
dentro de nestedscrollview
y el horizontal recyclerview
dentro del vertical recyclerview
como Playstore y mantener el desplazamiento suave.
Resuelto
Usando la vista de desplazamiento anidada personalizada de @vrund purohit (código a continuación), y nesteds deshabilitado, tanto la vista de reciclaje vertical como la horizontal:
verticalRecyclerView.setNestedScrollingEnabled(false);
... add each horizontal recyclerviews:
horizontalRecyclerView.setNestedScrollingEnabled(false);
He resuelto el problema utilizando el siguiente código:
myRecyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false){
@Override
public boolean canScrollHorizontally() {
return true;
}
@Override
public boolean canScrollVertically() {
return true;
}
});
Tuve este mismo problema y resolví este problema personalizando NeatedScrollView
.
Aquí está la clase para eso.
MyNestedScrollView
public class MyNestedScrollView extends NestedScrollView {
@SuppressWarnings("unused")
private int slop;
@SuppressWarnings("unused")
private float mInitialMotionX;
@SuppressWarnings("unused")
private float mInitialMotionY;
public MyNestedScrollView(Context context) {
super(context);
init(context);
}
private void init(Context context) {
ViewConfiguration config = ViewConfiguration.get(context);
slop = config.getScaledEdgeSlop();
}
public MyNestedScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MyNestedScrollView(Context context, AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private float xDistance, yDistance, lastX, lastY;
@SuppressWarnings("unused")
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final float x = ev.getX();
final float y = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
lastX = ev.getX();
lastY = ev.getY();
// This is very important line that fixes
computeScroll();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - lastX);
yDistance += Math.abs(curY - lastY);
lastX = curX;
lastY = curY;
if (xDistance > yDistance) {
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
public interface OnScrollChangedListener {
void onScrollChanged(NestedScrollView who, int l, int t, int oldl,
int oldt);
}
private OnScrollChangedListener mOnScrollChangedListener;
public void setOnScrollChangedListener(OnScrollChangedListener listener) {
mOnScrollChangedListener = listener;
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (mOnScrollChangedListener != null) {
mOnScrollChangedListener.onScrollChanged(this, l, t, oldl, oldt);
}
}
}
Feliz codificacion
Utilice el siguiente código para un desplazamiento suave:
ViewCompat.setNestedScrollingEnabled(recyclerView, false);
[RESUELTO] Tengo el mismo problema con el reciclaje horizontal. Cambiar el repositorio de Gradle para reciclaje.
compile ''com.android.support:recyclerview-v7:23.2.1'' Escriba esto: linearLayoutManager.setAutoMeasureEnabled (true);
Errores corregidos relacionados con varios métodos de medición de especificaciones en la actualización
Consulte http://developer.android.com/intl/es/tools/support-library/features.html#v7-recyclerview
He encontrado un problema con la biblioteca 23.2.1: cuando el elemento es match_parent recycle, complete el elemento completo para ver, siempre vaya con min height o "wrap_content".
Gracias