android - medidas - ¿Qué unidad de medida usa LayoutParams?
que es dp en android (3)
Estoy trabajando con un diseño lineal y quiero establecer la altura máxima de la vista. Bajo circunstancias "normales", quiero que la vista use "wrap_content". Sin embargo, ocasionalmente las circunstancias pueden llevar el diseño a un tamaño indeseable. Cuando esto suceda, quiero limitar la altura a un máximo de 300dp.
He establecido el tamaño de la vista utilizando lo siguiente cuando la lista en el diseño supera los 4 elementos de la lista:
LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout);
if(list.size() > 4){
LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);
listLayout.setLayoutParams(params);
}
Revisar la documentation me deja ninguna pista sobre la unidad de medida que se aplica. ¿Cuáles son las unidades de medida en esta situación (dp, sp, px, ...)?
Las pruebas en ejecución, incluso estableciendo el valor en 100, tienen la lista que excede la altura deseada.
por favor avise
Aquí está la clase completa con importaciones si tiene problemas - @ Pierre.Vriens
//usage: int 300dpInPixels = util.convertDpToPixel(300);
import android.content.res.Resources;
import android.util.DisplayMetrics;
public class utils {
public static int convertDpToPixel(float dp){
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float px = dp * (metrics.densityDpi / 160f);
return Math.round(px);
}
}
Como dijo David, la configuración de LayoutParams a través del código se establece en píxeles. Puede usar el código en este hilo para convertir el dp deseado a px.
Según la documentación que hayas vinculado: píxeles. Ver esta funcion
el ancho, ya sea MATCH_PARENT, WRAP_CONTENT o un tamaño fijo en píxeles
Aunque la función que está utilizando no tiene ninguna documentación explícita, se implica que utiliza la misma documentación que la función con la mayoría de los parámetros. La función en sí probablemente se parece a:
LinearLayout.LayoutParams(int width, int height) {
this(width, height, /*some default value*/);
}
es decir, simplemente está llamando a la versión de 3 parámetros con un valor predeterminado.