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



我正在使我的应用程序与平板电脑兼容,我正在努力了解做到这一点的最佳方法是什么。

我有一个GridView与图像和文本下的每个图像。目前,每个图像的高度被设置为120dp,而不是wrap_content,这样它就可以被适当地缩放和对齐到它的高度,一切看起来都很均匀。方向改变效果很好,GridView会自动从2xN变为3xN。

现在我想把它放在平板电脑上,GridView最终是5xN和7xN取决于方向(在10英寸的平板电脑上)。然而,为了使GridView看起来更好,我宁愿将图像高度更改为更大的值(例如300dp),并减少尺寸较大的项目。最好的方法是什么?

我不想只取出元素并复制它的所有值,只更改一个。理想情况下,我希望能够简单地将高度值放入诸如strings.xml和strings-xlarge.xml之类的东西中,然后从布局中引用它。这可能吗?我真的很讨厌重复代码/资源。

谢谢。

您要查找的是dimen标记。它的工作原理类似于字符串标记,但针对维度。你可以在values/dimensions .xml中这样写:

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

和values-xlarge/dimensions .xml:

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

你的XML可以通过@dimen/image_size引用大小,一切都会为你照顾。你也可以从Context中通过getResources(). getdimension (r . dimension .image_size)编程地访问它。

请注意,从3.2开始,您可以在资源名称中使用像素要求(如w720dp),而不是像xlarge这样的"bucket"。

最新更新