将dimensions.xml中的维度应用于使用Html.fromHtml格式化的文本

时间:2015-07-11 02:16:33

标签: android html xml textview format

我有用于设置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格式化的文字?

非常感谢。

4 个答案:

答案 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">&lt;font size = &quot;%s&quot;&gt;</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中。