2013-11-21 67 views
3

我有一個textview,我想在正常的TextSize中顯示0.0,然後以較小的文本大小顯示StringResult()。Html.fromHtml無法正常工作

如果我添加「0.0」+它不起作用。爲什麼?

public String StringResult(){ 
String displayLbl = this.getResources().getString(R.string.displayLbl); 
TextView myUnitLbl = (TextView)findViewById(R.id.lbl_unit_res); 
String myFinalLbl = displayLbl + " " + myUnitLbl.getText() + " "; 
return myFinalLbl; 
} 


public void cmd_rst(View v){ 
TextView lblText = (TextView) findViewById(R.id.lblresult); 
lblText.setText("0.0" + Html.fromHtml("<small>" + StringResult() + "</small>")); 
} 
+0

'lblText.setText(Html.fromHtml(「」+ StringResult()+「」)); //只有這樣才行' – dunrad

回答

4

那是因爲SpannedHtml.fromHtml返回被用作普通的字符串(從而失去任何格式)當您嘗試與「0.0」來連接它。爲了使這項工作,通過全塞給她fromHtml

Html.fromHtml("0.0<small>" + StringResult() + "</small>") 

同樣的原則也適用於更復雜的情況:

lblResult.setText(Html.fromHtml(String.format("%.1f", myCalc) + " " + "<br>" + 
    "<small>" + StringResult() + "</small>")); 
+0

是的。很簡單,謝謝。但在這種情況下如何更復雜? 'lblResult.setText(String.format(「%。1f」,myCalc)+「」+「\ n」+ Html.fromHtml(「」+ StringResult()+「」));' – dunrad

+0

Thanks Henry ! 這很明顯,我不得不按照你的建議在Html.fromHtml()下包含所有東西。 工程就像一個魅力! – dunrad

+1

然後你可能想接受答案。 – Henry

1

只是

Html.fromHtml("0.0<small>" + StringResult() + "</small>") 

改爲

Html.fromHtml("0.0<small>" + StringResult() + "</small>").toString() 

因爲f romHtml()方法使用Spanned類型的參數而不是String類型。

+1

嗯,我不明白。 'Html.fromHtml()'返回一個'Spanned',如果你調用'toString()',格式化將會丟失。 – Henry