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

Art*_*kii 2 scaling android gridview tablet imageview

我正在做我的应用程序兼容平板电脑,我试图了解这样做的最好办法是什么.

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

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

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

谢谢.

Ian*_*ton 6

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

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="image_size">120dp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)

在values-xlarge/dimens.xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="image_size">300dp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)

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

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