Cómo evitar que Swipeerefreshlayout muestre el menú desplegable
Métricas finales de DisplayMetrics = getResources().getDisplayMetrics();
mDistanceToTriggerSync = (int) Math. min(( (View) getParent()).getHeight() * MAX_SWIPE_DISTANCE_FACTOR, REFRESH_TRIGGER_DISTANCE * metrics.density);
La operación anterior utiliza la altura de la vista principal y algunos MAX_SWIPE_DISTANCE_FACTOR (0.6) y REFRESH_TRIGGER_DISTANCE (120) constantes privadas, nosotros No se puede modificar directamente. OnGlobalLayoutListener() {
public void onGlobalLayout() {
métricas finales de DisplayMetrics = getResources().getDisplayMetrics();
Float mDistanceToTriggerSync = Math.min( ((Ver) swipeLayout.getParent( )).getHeight() * 0.6f, 500 * metrics.density);
prueba {
Campo campo = SwipeRefreshLayout.class.getDeclaredField( " mDistanceToTriggerSync");
field.setAccessible(true);
field.setFloat(swipeLayout, mDistanceToTriggerSync
} captura (Excepción e) {
e.printStackTrace();
}
ViewTreeObserver obs = swipeLayout.getViewTreeObserver();
obs.removeOnGlobalLayoutListener(this);
}
}
Copiar código
Para comparar este código con el siguiente, simplemente cambie REFRESH_TRIGGER_DISTANCE (120) Cambie el valor a 500, y encontrará que la distancia de actualización del menú desplegable se vuelve significativamente mayor