Estoy haciendo:
button.setLayoutParams(new GridView.LayoutParams(65, 65));
De acuerdo con los documentos, las unidades para el ancho y la altura (ambas 65 en el anterior) son "píxeles". ¿Cómo obliga a que se trate de píxeles independientes del dispositivo o "dp"?
dp
apx
? Gracias.Sé que esta es una vieja pregunta, sin embargo, he encontrado una forma mucho más ordenada de hacer esta conversión.
Java
Kotlin
fuente
65
anterior es el valor DP que desea convertir a PXMirando su requerimiento, también hay una solución alternativa. Parece que conoce las dimensiones en dp en tiempo de compilación, por lo que puede agregar una entrada de dimen en los recursos. Luego puede consultar la entrada de dimen y se convertirá automáticamente a píxeles en esta llamada:
Y tu dimens.xml tendrá:
Extendiendo esta idea, simplemente puede almacenar el valor de 1dp o 1sp como una entrada de dimen y consultar el valor y usarlo como un multiplicador. Con este enfoque, aislará el código del material matemático y dependerá de la biblioteca para realizar los cálculos.
fuente
La forma más simple (e incluso funciona desde la API 1) que probó es:
De documentaciones:
Sí, redondeando el valor, pero no es muy malo (solo en valores impares en dispositivos hdpi y ldpi necesitan agregar un pequeño valor cuando ldpi no es muy común) Lo probé en un dispositivo xxhdpi que convierte 4dp a 16 (píxeles) y eso es cierto.
fuente