Primero, obtenga la altura del ListView usando getHeight, que devuelve el alto del ListView en píxeles.
A continuación, obtenga la altura de la Vista de la fila con el mismo método.
Luego, use setSelectionFromTop y pase la mitad de la altura de ListView menos la mitad de la altura de la fila.
Algo así como:
int h1 = mListView.getHeight();
int h2 = v.getHeight();
mListView.setSelectionFromTop(position, h1/2 - h2/2);
O, en vez de hacer los cálculos, es posible que sólo debes elegir una constante para el desplazamiento desde la parte superior, pero yo creo que podría ser más frágiles en diferentes dispositivos desde el segundo argumento para setSelectionFromTop parece estar en píxeles en lugar de píxeles independientes del dispositivo.
No he probado este código, pero debería funcionar siempre que sus filas tengan aproximadamente la misma altura.
Hola, me puede ayudar con esto .. Tengo un ListView que tiene sólo 5 artículos en ella y por lo tanto el ListView no se desplaza. Pero quiero establecer el elemento seleccionado al centro, y smoothScrollByOffset (int offset) no parece funcionar. –