Sha*_*arj 89 android android-layout
Android View.setPadding(int left, int top, int right, int bottom)
只接受px中的值,但我想在dp中设置填充.它有什么办法吗?
Lab*_*lan 178
直接编码
int padding_in_dp = 6; // 6 dps
final float scale = getResources().getDisplayMetrics().density;
int padding_in_px = (int) (padding_in_dp * scale + 0.5f);
Run Code Online (Sandbox Code Playgroud)
小智 91
如果您在XML文件中定义维度(以dp或其他为单位)(无论如何,至少在大多数情况下更好),您可以使用以下代码获取它的像素值:
context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)
Run Code Online (Sandbox Code Playgroud)
有一种更好的方法以编程方式将值转换为 dp:
int value = 200;
int dpValue = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
value,
context.getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)
然后应用dpValue
到您的方法,例如:setPadding(dpValue,dpValue,dpValue,dpValue);