"dp" 和 Android Studio 中的 int 有什么关系?
What is the relation between "dp" and int in Android Studio?
我们都知道TextView有一个属性"textSize",其单位从"dp"到"sp"不等。
但是有一天,当我搜索一个问题“Set ImageView width and height programmatically”时,我发现投票最高的答案是:image_view.getLayoutParams().height = 20;
其实我想编程设置一个ImageView的高度和TextView一样高,但是TextView的textSize是20dp,而ImageView的高度是一个int,20。
那么"dp"和"int"有什么关系呢?如何将一个转换为另一个?
当您以编程方式设置视图的宽度时,它实际上将 pixel 的高度作为整数值。因此,当您设置 image_view.getLayoutParams().height = 20;
时,这意味着需要 20 像素 。但是您也可以通过将 dp 转换为 pixel 来设置宽度和高度的 dp。可以这样转换
final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
此处 dps 您的实际 dp 及其用于设置宽度和高度的转换像素。
我们都知道TextView有一个属性"textSize",其单位从"dp"到"sp"不等。
但是有一天,当我搜索一个问题“Set ImageView width and height programmatically”时,我发现投票最高的答案是:image_view.getLayoutParams().height = 20;
其实我想编程设置一个ImageView的高度和TextView一样高,但是TextView的textSize是20dp,而ImageView的高度是一个int,20。
那么"dp"和"int"有什么关系呢?如何将一个转换为另一个?
当您以编程方式设置视图的宽度时,它实际上将 pixel 的高度作为整数值。因此,当您设置 image_view.getLayoutParams().height = 20;
时,这意味着需要 20 像素 。但是您也可以通过将 dp 转换为 pixel 来设置宽度和高度的 dp。可以这样转换
final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
此处 dps 您的实际 dp 及其用于设置宽度和高度的转换像素。