Android以编程方式更改样式

时间:2011-06-06 19:26:29

标签: android android-layout

我有超过50个XML布局/页面,需要一种方法来确定每种屏幕类型(小/中/大)的“基本”字体大小。实际上,我需要指定其他内容,例如线性布局的大小。

简而言之,我想区分小型/中型/大型设备之间的尺寸。

1)我会在启动期间以编程方式更改styles.xml中的文本大小吗?

此选项很方便,因为我不必制作150多个XML布局。

2)我是否会为这三种尺寸创建三个单独的XML Layout?

我必须复制+粘贴每个样式(* .small,* .med,* .large)......这听起来好像需要做很多工作。

有任何意见吗?

2 个答案:

答案 0 :(得分:3)

我假设您知道应该使用Vinay的答案中所述的可扩展单位:

http://developer.android.com/guide/practices/screens_support.html

我强烈建议您不要偏离“最佳做法”,除非您真的知道自己在做什么。它只能带来你的问题。我不是专业人士,这就是我尝试遵循标准的原因。好的,现在让我们回答:

如果要使用不同的大小,并且可伸缩单元不够,则必须将它们声明为某处。因此,无论如何,您都要声明不同的文件......这是不可避免的。但话说回来,只有当你的可扩展单位不足以在不同的屏幕上提供所需的视觉效果时。

为此,您在value个文件夹中声明。您在Google代码上看到Google I/O app source了吗?这是“谷歌”,他们做得很好。如果你想通过实例学习,那可能是我能想到的最完整的资源。但一开始有点可怕。

这里有很多问题(许多简单的问题......看起来你真的不知道你的方式,对不起,如果不是这样的话),你可能最好下载这个源代码树。

当然,valuelayout个文件夹都以透明的方式工作(这是使用标准的全部要点),因此您无需担心屏幕变化您的布局(在解决键值样式时)和/或在运行时(在处理样式和布局时)。

答案 1 :(得分:1)

嗯,我不太确定我完全理解你的问题,但看起来你只是担心字体大小,在XML中定义TextSize时可以通过使用“缩放像素”(sp)来标准化。您也可以编程方式更改文本大小(建议的#1),方法是抓取TextView的Id并通过setTextSize()方法设置文本大小。

如果这不是您正在寻找的答案,请告诉我。