View.setPadding只在px中接受,反正在dp中有setPadding吗?

Android View.setPadding(int left, int top, int right, int bottom)只接受px中的值,但是我想在dp中设置填充。 有没有办法解决它?

直接编码

  int padding_in_dp = 6; // 6 dps final float scale = getResources().getDisplayMetrics().density; int padding_in_px = (int) (padding_in_dp * scale + 0.5f); 

如果你在一个XML文件中定义了尺寸(以dp或者其他方式)(至less在大多数情况下哪个更好),你可以使用下面的代码得到它的像素值:

 context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name) 

您可以计算特定DPI值的像素: http : //forum.xda-developers.com/showpost.php?p=6284958&postcount=31

我有同样的问题。 我find的唯一的解决scheme(它不会真的帮助你:))是将其设置在Xml文件中。

如果可以从代码中获得密度,则可以使用转换:“倾angular单位转换为屏幕像素很简单:像素=倾斜*(密度/ 160)”。 (来自http://developer.android.com/guide/practices/screens_support.html

编辑:你可以得到屏幕密度: http : //developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi