【问题标题】:What is the relation between "dp" and int in Android Studio?Android Studio中的“dp”和int有什么关系?
【发布时间】:2020-01-04 08:42:10
【问题描述】:

我们都知道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" 之间的关系是什么?如何将一个转换为另一个?

【问题讨论】:

    标签: android textview imageview


    【解决方案1】:

    当您以编程方式设置视图的宽度时,它实际上将 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 及其用于设置宽度和高度的转换像素。

    【讨论】:

    • 这很清楚!但我还有一个问题:为什么你最后“+0.5f”?
    • 其实就是一个将dp转换为像素的公式。而我可以说+0.5f,目的是四舍五入到最近的像素。欲了解更多信息,您可以访问developer.android.com/training/multiscreen/screendensities
    • 嗯,这对我来说有点复杂,也许我需要更多时间来理解它们并在其他日子问另一个问题。但是我确实弄清楚了原始问题的答案,所以非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2013-05-18
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2011-07-31
    • 2020-08-18
    相关资源
    最近更新 更多