使用XML的特定于平板电脑的ImageView宽度/高度/等值?

时间:2011-11-01 01:31:54

标签: android gridview imageview scaling tablet

我正在使我的应用与平板电脑兼容,而我正在努力了解这样做的最佳方式。

我有一个GridView,每个图像下都有图像和文字。目前,每个图像的高度设置为120dp而不是wrap_content,以便它可以缩放并正确对齐其高度,一切看起来都很均匀。方向更改效果很好,GridView会自动从2xN更改为3xN。

现在我想把它放在平板电脑上,GridView最终会变成5xN和7xN,具体取决于方向(在10英寸平板电脑上)。但是,为了让GridView看起来更好,我宁愿将图像高度更改为一个更大的值(比如300dp),并且具有更小的项目。这样做的最佳方式是什么?

我不想只提取元素并复制其所有值,只更改一个。理想情况下,我希望能够将height值放入strings.xml和strings-xlarge.xml之类的函数中,然后从布局中引用它。那可能吗?我真的很讨厌重复代码/资源。

谢谢。

1 个答案:

答案 0 :(得分:6)

您正在寻找的是dimen标签。它与字符串标签的工作方式类似,但对于尺寸。你可以在values / dimens.xml中使用这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="image_size">120dp</dimen>
</resources>

在values-xlarge / dimens.xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="image_size">300dp</dimen>
</resources>

您的XML可以通过@ dimen / image_size引用大小,一切都将为您处理。您也可以使用上下文中的getResources()。getDimension(R.dimen.image_size)以编程方式访问它。

请注意,从3.2开始,您可以在资源名称中使用像素要求(例如w720dp),而不是像xlarge那样使用“buckets”。更多信息here