gpt4 book ai didi

Android 在不使用 XML 的情况下指定像素单位(如 sp、px、dp)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:27 25 4
gpt4 key购买 nike

是否可以在代码中指定像素单位。我的意思是,假设我有一个布局,我希望大小为 20dp,那么有没有什么方法可以不在布局 xml 中编写

最佳答案

在 View 中:

DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = metrics.density * dp;
int pixels = (int) (fpixels + 0.5f);

当然,在 Activity 中,您会停止 getContext()

要将缩放像素 (sp) 转换为像素,只需使用 metrics.scaledDensity 而不是 metrics.density

编辑:作为@Santosh's answer指出,您可以使用实用程序类做同样的事情 TypedValue :

DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics);
int pixels = Math.round(fpixels);

对于 sp,将 TypedValue.COMPLEX_UNIT_SP 替换为 TypedValue.COMPLEX_UNIT_DIP

在内部,applyDimension() 执行与我上面的代码完全相同的计算。使用哪个版本取决于您的编码风格。

关于Android 在不使用 XML 的情况下指定像素单位(如 sp、px、dp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5012840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com