Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以为Android使用XML中的变量吗?_Android_Xml - Fatal编程技术网

我可以为Android使用XML中的变量吗?

我可以为Android使用XML中的变量吗?,android,xml,Android,Xml,不要对每个textview使用以下行: android:textSize="40sp" 我能用变量替换40sp吗 作为一个附带问题,有人建议我按照用户定义的设置使用SP单位。这是一个最佳实践吗?正如我所知,使用SP是一个非常好的文本大小实践。 根据你们的第一个问题,我认为我们不能使用变量,但是,有一个更好的方法。看看- 因此,如果要定义样式,可以像那样用XML声明视图 这种样式将包含您想要在该屏幕上设置为文本视图的所有参数 我能用变量替换40sp吗 您可以使用(例如,android:textS

不要对每个textview使用以下行:

android:textSize="40sp"
我能用变量替换40sp吗


作为一个附带问题,有人建议我按照用户定义的设置使用SP单位。这是一个最佳实践吗?

正如我所知,使用SP是一个非常好的文本大小实践。 根据你们的第一个问题,我认为我们不能使用变量,但是,有一个更好的方法。看看-

因此,如果要定义样式,可以像
那样用XML声明视图 这种样式将包含您想要在该屏幕上设置为文本视图的所有参数

我能用变量替换40sp吗

您可以使用(例如,
android:textSize=“@dimen/someSize”
),也可以使用这样的样式(根据AlexN的回答),或者通过
setTextSize()
在运行时设置大小

有人建议我按照用户定义的设置使用SP单位。这是最佳实践吗


在较新版本的Android上,用户可以通过设置应用程序更改基本字体大小。通过对单位使用
sp
,您的字体大小将随基本字体大小一起缩放。如果使用其他单位(例如,
dp
),则无论用户的设置如何,字体大小都将保持不变。很难说sp的任何特定使用是否是“最佳实践”——我确信在某些情况下,允许字体大小更改是一件坏事。不过,默认情况下,
sp
可能是正确的起点。

不,不可能在XML文件中使用基于代码的变量。但是,您可以为此使用样式

例如:

<style name="MyTvStyle">
  <item name="android:textSize">40sp</item>
</style>

是的,最好使用
sp
而不是普通像素值。因为
sp
将根据设备大小和用户设置进行缩放。

谢谢。我甚至不知道风格。
<TextView style="@style/MyTvStyle" ... />
int[] id_array = {
    R.id.textview1, R.id.textview2, R.id.textview3 //Put all the id's of your textviews here
}

for(int i : id_array) { //Loop trough all the id's and retrieve the Textview associated with it.
    TextView textview = (TextView)findViewById(i);
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP,40); //Set the text size to 40sp
}