将 dimens.xml 中的尺寸应用于 Html.fromHtml 格式的文本
Applying dimensions from dimens.xml to text formatted with Html.fromHtml
我有这段代码用于设置 TextView 的文本:
TextView txt = new TextView(this);
txt.setText(Html.fromHtml("<b>" + m.getTitle() + "</b>" + "<br />" + "<small>" + m.getText() + "</small>" + "<br />");
<small>
标记有效,但我想根据我在 dimens.xml 文件中定义的尺寸设置文本大小,我将其用于应用程序中的所有其他文本。通过 xml 布局添加 TextView 不是一种选择,因为我不知道我将添加多少个 TextView。
dimens.xml 文件中的维度设置为 <dimen name="text_size_320dp_small">16sp</dimen>
。
如何将这些尺寸应用到我的 Html.fromHtml
格式的文本?
非常感谢。
你为什么不使用 txt.setSizeText(yoursize)
?但是,您可以使用此检索尺寸:
float yourDimen = getResources().getDimension(R.dimen.your_dimen_name);
不能直接,小标签创建一个RelativeSizeSpan,比例为.8f
,硬编码到Html.fromHtml
的实现中。
留下两个我可以看到的选项,将文本大小设置为 20sp(这将使小作品达到 16sp)。可能不太理想。
另一种选择是使用自定义标签 <mySmall>
,将所有出现的 <small>
和 </small>
替换为 <mySmall>
& </mySmall>
。然后调用 fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) with a TagHandler
that integrates a AbsoluteSizeSpan 进入输出 Editable
.
我自己测试了以下代码。你可以这样做。
txt.setText(Html.fromHtml("<b>" + m.getTitle() + "</b>" + "<br />"
+ "<font textsize="
+ getResources().getDimension(R.dimen.text_size_320dp_small) + ">" + m.getText()
+ "</font>" + "<br />"));
[更新]:
刚刚提出一些参考和更新:
您可以将其存储在 strings.xml
<string name="mystring"><font size = "%s"></string>
在代码中你可以这样写:
int sptopx = getResources().getDimensionPixelSize(R.dimen.text_size_320dp_small);
Spanned modified = Html.fromHtml( context.getString(R.string.mystring, sptopx) );
myTextView.setText(spanned);
TextView txt = new TextView(this);
txt.setText(
Html.fromHtml(
"<b>" + m.getTitle() + "</b>" +
"<br />" +
modified +
">" + m.getText() + "</font>" +
"<br />"
)
);
有关 html 标签支持的详细信息,您可以查看 this link。
我有这段代码用于设置 TextView 的文本:
TextView txt = new TextView(this);
txt.setText(Html.fromHtml("<b>" + m.getTitle() + "</b>" + "<br />" + "<small>" + m.getText() + "</small>" + "<br />");
<small>
标记有效,但我想根据我在 dimens.xml 文件中定义的尺寸设置文本大小,我将其用于应用程序中的所有其他文本。通过 xml 布局添加 TextView 不是一种选择,因为我不知道我将添加多少个 TextView。
dimens.xml 文件中的维度设置为 <dimen name="text_size_320dp_small">16sp</dimen>
。
如何将这些尺寸应用到我的 Html.fromHtml
格式的文本?
非常感谢。
你为什么不使用 txt.setSizeText(yoursize)
?但是,您可以使用此检索尺寸:
float yourDimen = getResources().getDimension(R.dimen.your_dimen_name);
不能直接,小标签创建一个RelativeSizeSpan,比例为.8f
,硬编码到Html.fromHtml
的实现中。
留下两个我可以看到的选项,将文本大小设置为 20sp(这将使小作品达到 16sp)。可能不太理想。
另一种选择是使用自定义标签 <mySmall>
,将所有出现的 <small>
和 </small>
替换为 <mySmall>
& </mySmall>
。然后调用 fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler) with a TagHandler
that integrates a AbsoluteSizeSpan 进入输出 Editable
.
我自己测试了以下代码。你可以这样做。
txt.setText(Html.fromHtml("<b>" + m.getTitle() + "</b>" + "<br />"
+ "<font textsize="
+ getResources().getDimension(R.dimen.text_size_320dp_small) + ">" + m.getText()
+ "</font>" + "<br />"));
[更新]:
刚刚提出一些参考和更新:
您可以将其存储在 strings.xml
<string name="mystring"><font size = "%s"></string>
在代码中你可以这样写:
int sptopx = getResources().getDimensionPixelSize(R.dimen.text_size_320dp_small);
Spanned modified = Html.fromHtml( context.getString(R.string.mystring, sptopx) );
myTextView.setText(spanned);
TextView txt = new TextView(this);
txt.setText(
Html.fromHtml(
"<b>" + m.getTitle() + "</b>" +
"<br />" +
modified +
">" + m.getText() + "</font>" +
"<br />"
)
);
有关 html 标签支持的详细信息,您可以查看 this link。