2011-11-01 87 views
2

我正在使我的应用程序与平板电脑兼容,并且我正在尝试了解执行此操作的最佳方式。使用XML的平板特定的ImageView宽度/高度/等值?

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

现在我想将它放在平板电脑上,根据方向(在10英寸平板电脑上),GridView最终为5xN和7xN。但是,为了使GridView看起来更好,我宁愿更改图像高度到一个更大的值(比如300dp),并且有更少的项目是更大的尺寸。这样做的最好方法是什么?

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

谢谢。

+0

您应该可以使用其他尺寸的xml文件(tablet/hdpi/mdpi/ldpi),这些尺寸会根据您加载应用程序的设备类型加载。与在视图加载之前替换字符串的方式相同,也应该可以使用“height”和“width”参数。你试过了吗? – Andre

+0

请你澄清一下吗?你的答案不清楚。我应该在哪里放置维度值? –

回答

6

您要找的是dimen标签。它与字符串标签类似,但是对于尺寸。您可以在值/ dimens.xml是这样的:

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

和价值,XLARGE/dimens.xml:

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

你的XML可以通过@扪/ IMAGE_SIZE和一切引用尺寸将照顾你。您也可以通过上下文的getResources()。getDimension(R.dimen.image_size)以编程方式访问它。

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

+0

正是我需要的,谢谢。 –

相关问题