android - linearlayout - View.setPadding solo acepta en px, ¿hay alguna forma de configurar Padding en dp?
linearlayout android caracteristicas (4)
Android View.setPadding(int left, int top, int right, int bottom)
solo acepta valores en px, pero quiero configurar el relleno en dp. ¿Hay alguna manera de evitarlo?
Directo al código
int padding_in_dp = 6; // 6 dps
final float scale = getResources().getDisplayMetrics().density;
int padding_in_px = (int) (padding_in_dp * scale + 0.5f);
Puede calcular los píxeles para un valor de DPI específico: http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31
Si define la dimensión (en dp o lo que sea) en un archivo XML (que de todos modos es mejor, al menos en la mayoría de los casos), puede obtener el valor de píxel del mismo con este código:
context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)
Tengo el mismo problema. La única solución que he encontrado (no te va a ayudar :)) es configurarla en el archivo Xml.
Si puede obtener la densidad del código, puede usar la conversión: "La conversión de unidades de inmersión a píxeles de pantalla es simple: pixels = dips * (densidad / 160)". (de http://developer.android.com/guide/practices/screens_support.html )
Editar: puede obtener la densidad de la pantalla: http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi