如何使用dip在webview css中指定图像大小?

9

我有一个WebView,通过CSS文件进行格式化 - 我在应用程序内部动态生成HTML以供此视图使用,就像Web服务器一样。 生成的HTML引用静态CSS文件进行格式化。 我有一个图像格式化指令,例如:

img {
    width: 20px;
    height: 20px;
}

为了使此设备独立,我想使用dip而不是px来测量宽度和高度。我无法找到如何在css定义中指定dip作为单位的方法。我尝试过"dp"和"dip",但都不起作用。这可行吗?
我知道我可以有多个版本的CSS文件,通过像<"target-densitydpi=high-dpi">这样的选择器进行选择,但这意味着我将有重复的CSS文件,只是为了根据不同设备密度调整图像大小。虽然可行,但我更喜欢能够在CSS文件中指定dip,并让WebView为我完成工作。
另一个可行的方法是在HTML头部生成内联样式表,并将dip转换为特定设备的px,但这会导致CSS定义与HTML生成代码之间的耦合。对于我的应用程序来说,可能比多个CSS文件好,但最好还是只需在CSS文件中设置dip即可。
(我的图像被设计为允许在当前支持的屏幕密度范围内调整大小而不产生伪影)
2个回答

2
以下是您需要翻译的内容:

在CSS中可用的单位包括:

http://www.w3.org/TR/css3-values/#lengths

CSS中不存在dp或dip,因此我不确定您怎么想到这样的单位存在。

相反,CSS规范建议将像素大小按设备相对大小进行缩放。

这只是理论。

实际上,您可能需要动态生成CSS以支持这种特性。


谢谢。这个理论不适用于我拥有的两个物理设备 - Motorola Droid 2和LG VM670。目前考虑在body标签中设置字体大小以定义1 em的基准线,然后在CSS的其余部分中使用em值类似于dip,并根据物理设备动态确定body标签字体大小的正确值。我希望Android系统内部有一些(即使是非标准的)扩展功能,但我不知道如何利用它们。 - Colin
作为此帖子的附录,请阅读quirksmode上的这篇文章。将设备像素比例缩放到CSS像素应该是用户代理的责任。(只希望CSS规范能够称其为与“像素”不同的其他名称,因为“像素”这个词相当令人困惑。) - Maarten

1

dp 实际上是 /160,因此您可以使用长度单位(例如英寸或毫米)指定所有大小。当然,假设成比例。

但不幸的是,css 中的绝对尺寸与实际尺寸不匹配,我刚刚检查了一下。 :(


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接