我有用于设置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
格式化的文字?
非常感谢。
答案 0 :(得分:3)
我自己测试了以下代码。你可以这样做。
txt.setText(Html.fromHtml("<b>" + m.getTitle() + "</b>" + "<br />"
+ "<font textsize="
+ getResources().getDimension(R.dimen.text_size_320dp_small) + ">" + m.getText()
+ "</font>" + "<br />"));
答案 1 :(得分:2)
<强> [更新]:强>
刚刚提出了一些参考和更新:
您可以将其存储在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 />"
)
);
有关TextViews中html标记支持的详细信息,您可以查看this link。
答案 2 :(得分:1)
为什么不使用txt.setSizeText(yoursize)
?但是,您可以使用以下方法检索尺寸:
float yourDimen = getResources().getDimension(R.dimen.your_dimen_name);
答案 3 :(得分:1)
你不能直接,小标签创建一个RelativeSizeSpan,其比例为.8f
,它被硬编码到Html.fromHtml
的实现中。
留下我可以看到的两个选项,将文本大小设置为20sp(这将使小的工作量达到16sp)。可能不理想。
另一个选项是使用自定义代码<mySmall>
,将所有<small>
和</small>
替换为<mySmall>
&amp; </mySmall>
。然后使用TagHandler
调用fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler),将AbsoluteSizeSpan集成到输出Editable
中。