studio linearlayout layout_width examples ejemplo dinamico constraint caracteristicas android android-layout

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);



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