9

在我的布局 XML 文件中,我通过一个名为dimens.xml.

例如,dimens.xml包含如下参数:

<dimen name="textSize_normal">20dp</dimen>
<dimen name="buttonTextSize_normal">15dp</dimen>
<dimen name="editTextSize_normal">17dp</dimen>
<dimen name="buttonHeight_normal">37dp</dimen>
<dimen name="margin_normal">5dp</dimen>

例如,在我main.xml的 中,我会通过执行以下操作来设置 a 的文本大小TextView

android:textSize="@dimen/editTextSize_normal"

它工作得很好。

现在,我的问题是,是否可以从我的主要活动中以编程方式为dimen我的文件中的变量设置值?dimen.xml我想要做的是获取屏幕尺寸,并设置,例如,textSize基于屏幕高度的一小部分,以便它可以轻松适应任何屏幕尺寸。我已经弄清楚了,我只需要你的帮助来弄清楚如何dimen在我的代码中设置变量。

4

4 回答 4

12

现在,我的问题是,是否可以通过我的主要活动以编程方式在我的 dimen.xml 文件中设置 dimen 变量的值?

不。

我要做的是获取屏幕尺寸,并根据屏幕高度的一小部分设置例如 textSize ,以便它可以轻松适应任何屏幕尺寸。

忽略这是一种奇怪的 UI 方法,这样做的方法是删除您的属性并在运行时使用Javaandroid:textSize更改文本大小。setTextSize()

我已经弄清楚了,我只需要你的帮助来弄清楚如何在我的代码中设置维度变量。

您不会“设置维度变量”。您可以通过诸如setTextSize().

于 2012-08-18T15:13:15.400 回答
7

不,您不能在运行时编辑资源文件,它们已经编译和生成。

于 2012-08-18T14:54:20.717 回答
1

您应该在所有资源中使用与密度无关的像素,以便尺寸可以适应屏幕尺寸。您不需要在运行时计算该值。如果您想为不同的屏幕尺寸设置不同的布局,请考虑使用多个资源文件。

阅读本指南

于 2012-08-18T14:53:38.687 回答
1

i guess what you mean is to change the size depending on the device's screen size.. which can be made by creating multiple dimens.xml files in folders like values-hdpi, values-xhdpi, values-xxhdpi, values-mdpi,.. and then on runtime the compiler will choose the dimen depending on the dpi i actually didn't try this before but i read it here.. take a look at this: http://developer.android.com/guide/practices/screens_support.html#qualifiers

于 2013-07-30T13:49:54.433 回答