setWidth(int pixels)是否使用与设备无关的像素或物理像素作为单位? 例如,setWidth(100)将视图的宽度设置为100或者100 pxs?setWidth(int pixels)是否使用dip或px?
谢谢。
setWidth(int pixels)是否使用与设备无关的像素或物理像素作为单位? 例如,setWidth(100)将视图的宽度设置为100或者100 pxs?setWidth(int pixels)是否使用dip或px?
谢谢。
它使用像素,但我相信你想知道如何使用骤降代替。答案在TypedValue.applyDimension()
。这里有一个如何逢低转换代码到PX的例子:
// Converts 14 dip into its equivalent px
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));
像素当然,该方法是要求像素作为参数。
如果是在布局XML文件中,我们可以指定的android:layout_width = “100dip” 或Android:layout_width = “100px的”。在源代码中,我们无法将布局的宽度指定为100dip? – user256239 2010-03-09 05:05:12
不是直接的,你必须使用DisplayMetrics.density来转换自己。 – 2010-03-09 05:10:25
获得代码的倾角的固定数量的正确方法是创建一个包含DP提供了一个资源XML文件中的值有点像:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="image_width">100dp</dimen>
<dimen name="image_height">75dp</dimen>
</resources>
然后参考该资源在你的代码如下所示:
float width = getResources().getDimension(R.dimen.image_width));
float height = getResources().getDimension(R.dimen.image_height));
你已经返回将被用于该设备的像素密度要相应地调整,所以你并不需要保持replicat浮子在整个应用程序中使用转换方法。
在我的情况下,这个解决方案在我有一个自定义对话框的情况下效果最好,该对话框有一个列表视图,并且希望将ListView中的标题标签和列的宽度设置为相同的宽度。 – 2013-06-07 11:02:51
你的第一句话有点儿有趣,你基本上说创建一个XML文件是*“在代码中指定[某事]”的正确方法*。那么我认为你只是使用代码中的常量没有指定它:) – Joffrey 2014-06-19 08:35:21
@Joffrey是的我明白你的意思,所以我已经略微更新了措辞 – SDJMcHattie 2014-07-10 14:37:12
方法setWidth(100),将宽度设置为100 px(不在dp中)。因此,在不同的android手机上可能会遇到宽度不定的问题。因此,在dp中使用测量而不是像素。使用下面的代码获取测量值示例宽度的dp = 300px,高度= 400px。
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics());
int Height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());
float dps = 100;
float pxs = dps * getResources().getDisplayMetrics().density;
你也可以调用nbDips * getResources()。getDisplayMetrics()。density – 2010-03-09 05:08:41
实际上,这正是TypedValue.applyDimension()所做的。我考虑过发布该内容,但我喜欢浏览API以防万一发生任何变化......但我认为如果您给予它可以使用该方法是安全的。 :) – 2010-03-09 05:15:34
applyDimension()版本执行更多的代码,我发现它更难以阅读。 FWIW,我发布的这一行是我们在框架和标准应用程序中实际使用的地方。 – 2010-03-09 05:25:02