¿Cómo se crea un ListView que no está en un ScrollView, o tiene desactivada la ScrollView?

StackOverflow https://stackoverflow.com/questions/2419246

  •  19-09-2019
  •  | 
  •  

Pregunta

Quiero algunas de las golosinas en un ListView, como ser capaz de utilizar un ListAdapter y selección de elementos, etc, pero no quiero que la parte ScrollView de ella. Quiero poner en práctica esa parte a mí mismo, de una manera diferente (por qué o cómo hacer esto no es realmente el punto de esta pregunta, así que por favor no pregunte "por qué").

¿Hay una manera de tener un ListView que no está en un ScrollView o ha desactivado el desplazamiento?

¿Fue útil?

Solución

A ListView no está en una ScrollView. Un ListView no intrínsecamente desplazamiento. No creo que se puede desactivar el desplazamiento a través de una API sencilla. Si es así, sus opciones son o subclase ListView y tratar de encontrar la manera de anular el desplazamiento comportamientos, ListView clon de desplazamiento y eliminar comportamientos, o escribir su propio AdapterView que hace las cosas de la manera deseada.

Otros consejos

Otra manera de hacer esto es envolver el ListView en cualquier solución de desplazamiento personalizada que ha cocinado para arriba. Si sólo tiene que establecer la altura de la ListView ser exactamente tan alto como todas las filas (usando LayoutParams de la vista de lista), a continuación, se comporta como una vista normal y no será capaz de desplazarse; Por lo tanto, puede agregarlo a otra vista de desplazamiento. La dificultad de este método es que usted tiene que saber la altura de su lista antes de tiempo, por lo que tiene que saber la altura de cada fila. Además, esto va a crear todas las filas a la vez y por lo que no será capaz de tomar ventaja de la función de visualización de reciclaje.

Si usted no tiene una forma sencilla de calcular la altura antes de tiempo, se puede engañar a la ListView para que lo hiciera para usted reemplazando onMeasure y dándole su propia especificación de altura:

// Calculate height of the entire list by providing a very large 
// height hint.  But do not use the highest 2 bits of this integer; 
//  those are reserved for the MeasureSpec mode.
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
        MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top