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

Android 将dimens.xml中的维度应用于使用Html.fromHtml格式化的文本,android,html,xml,textview,format,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 />"); TextView txt=新的TextView(此); txt.set

我有以下代码用于设置TextView的文本:

TextView txt = new TextView(this);
txt.setText(Html.fromHtml("<b>" + m.getTitle() + "</b>" +  "<br />" + "<small>" + m.getText() + "</small>" + "<br />");
TextView txt=新的TextView(此);
txt.setText(Html.fromHtml(“+m.getTitle()+”
“+”+m.getText()+”
“+”);
标记正在工作,但我想根据dimens.xml文件中定义的尺寸设置文本大小,我将该文件用于应用程序中的所有其他文本。通过xml布局添加TextView不是一个选项,因为我不知道要添加多少TextView

dimens.xml文件中的维度设置类似于
16sp

如何将这些维度应用于使用
Html.fromHtml
格式化的文本


非常感谢。

为什么不使用
txt.setSizeText(yoursize)
?但是,您可以使用以下方法检索尺寸:

float yourDimen = getResources().getDimension(R.dimen.your_dimen_name);

您不能直接使用这个小标记,它创建了一个比例为
.8f
,它被硬编码到
Html.fromHtml
的实现中

留下两个我可以看到的选项,将文本大小设置为20sp(这将使小计算变成16sp)。可能不太理想


另一个选项是使用自定义标记
,将所有出现的
替换为
&
。然后使用
标记处理程序调用
,该标记处理程序将a集成到输出
可编辑的

中。我自己已经测试了以下代码。您可以这样做

txt.setText(Html.fromHtml(“+m.getTitle()+”+”)
+“”+m.getText()
+“+”
”);

[更新]:

刚刚提出了一些参考和更新:

您可以将其存储在strings.xml中

<string name="mystring">&lt;font size = &quot;%s&quot;&gt;</string>
font size=“%s”
在代码中,您可以编写为:

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 />"
            )
            );
int sptopx=getResources().getDimensionPixelSize(R.dimen.text\u size\u 320dp\u small);
span modified=Html.fromHtml(context.getString(R.string.mystring,sptopx));
myTextView.setText(跨距);
TextView txt=新的TextView(此);
txt.setText(
Html.fromHtml(
“+m.getTitle()+”+
“
”+ 修改+ “>”+m.getText()+”+ “
” ) );

<> P>在TwiteVIEW中支持HTML标记的详细信息,你可以检查。< /P>我不使用它,因为它为整个文本设置了大小,而不仅仅是它的一部分。我仍然会考虑使用你的多个文本视图的替代品,虽然现在看起来很不实用。谢谢你的回答!代码在我不改变文本大小时将文本中的值更改为\u size\u 320dp\u small(我已经测试过从16sp更改为26sp)。根据我在中的其他问题中阅读的内容,字体标记被
Html忽略。fromHtml
。请告诉我它是否确实在为您更改文本大小,如果是,您的目标SDK版本是什么,或者您使用的是常规TextView,或者我们的代码可能存在的任何其他差异?我可以向您提供我的完整代码,but我认为你的代码片段比较短,找出差异应该是我的工作。谢谢。@Bunhy:请注意,
textsize
属性在中没有显示。我…嗯…哇。我在实现
Html.TagHandler
时遇到了问题。我没有花必要的时间来完全探索这个解决方案,但我确实尝试了这篇文章’的公认答案是:我无法真正理解在哪里使用
AbsoluteSizeSpan
以及如何使用。我会继续努力,但如果您能提供一个片段或一些指针,我会比现在更感激。因此,我可以成功地实现这一点。现在的问题是以编程方式检测屏幕宽度并添加根据它正确的标记,但是我的标记处理程序处理标记并获取dimens.xml文件。谢谢!很多!!但是快速提问:因为我喜欢你昨天的评论被截断,有什么我可以帮忙的吗?为什么你首先要使用HTML?在垂直
线性布局中使用两个
TextView
小部件。设置e> 在每个
TextView
上设置textSize
,并将第一个
textStyle
设置为
bold
。完成。如果需要,创建自己的
TitleAndTextView
,扩展
LinearLayout
,并将所有内容打包到一个复合小部件中。遗憾的是,它没有这样做。
Html.fromHtml
忽略字体g、 所以尺寸不是这样的。不过,我还是很感谢你的时间和努力。