Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Programe la altura en LayoutParams como píxeles independientes de la densidad

¿Hay alguna manera de establecer la altura / ancho de un LayoutParams como píxeles independientes de la densidad (dp)? Parece que la altura / ancho, cuando se establece mediante programación, están en píxeles y no dp.

  • ¿Cuál es la mejor solución para un salto de barra de progreso indeterminado en ICS?
  • Android ScrollView no respeta el margen inferior del niño
  • En Android, ¿qué significa la dimensión% p?
  • TextInputLayout: ¿Cómo dar relleno o margen para sugerir?
  • XML drawable Bitmap tileMode error?
  • Establecer siguiente EditText enfocado y editable en KEY_DOWN
  • Android: Círculo de dibujo con el interior del texto
  • Resolvamos el error "Error al encontrar estilo 'mapViewstyle' en tema actual"
  • 4 Solutions collect form web for “Programe la altura en LayoutParams como píxeles independientes de la densidad”

    Necesita convertir su valor de inmersión en píxeles:

    int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, <HEIGHT>, getResources().getDisplayMetrics()); 

    Para mí esto hace el truco.

      public static int getDPI(int size, DisplayMetrics metrics){ return (size * metrics.densityDpi) / DisplayMetrics.DENSITY_DEFAULT; } 

    Llame a la función como esta,

     DisplayMetrics metrics; metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int heigh = getDPI(height or width, metrics); 

    Aquí está mi fragmento:

     public class DpiUtils { public static int toPixels(int dp, DisplayMetrics metrics) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); } } 

    Donde DisplayMetrics metrics = getResources().getDisplayMetrics()

    Dado que puede ser utilizado varias veces:

     public static int convDpToPx(Context context, float dp) { DisplayMetrics metrics = context.getResources().getDisplayMetrics(); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); } 

    Lo encontré más práctico usar la tarifa de conversión, como usally más de un valor tiene que ser convertido. Dado que la tasa de conversión no cambia, ahorra un poco de tiempo de procesamiento.

     /** * Get conversion rate from dp into px.<br> * Eg to convert 100dp: px = (int) (100 * convRate); * @param context eg activity * @return conversion rate */ public static float convRateDpToPx(Context context) { return context.getResources().getDisplayMetrics().densityDpi / 160f; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.