我用setTypeface
設置粗體文字(或斜體或其他字體的屬性)從TextView中不改變其他屬性
TextView tv = findViewById(R.id.label);
...
tv.setTypeface(null,Typeface.BOLD);
...
如何刪除只有大膽的屬性,不改變其他屬性刪除粗體這可能是迄今爲止設定的?
我用setTypeface
設置粗體文字(或斜體或其他字體的屬性)從TextView中不改變其他屬性
TextView tv = findViewById(R.id.label);
...
tv.setTypeface(null,Typeface.BOLD);
...
如何刪除只有大膽的屬性,不改變其他屬性刪除粗體這可能是迄今爲止設定的?
tv.setTypeface(null,Typeface.NORMAL);
這會將樣式設置恢復到正常狀態而不更改顏色或大小。
但是,您不能以這種方式混合粗體/斜體/下劃線文本。如果您指定BOLD,則所有文本都將變爲粗體。如果你想混合文本的風格,我建議使用HTML來設置文本的樣式,然後使用下面的代碼。
tv.setText(Html.fromHtml(yourStringAsHtml));
這個塊的代碼刪除舊的字樣setTypeface(NULL,Typeface.NORMAL);
爲了保持舊的你應該叫
setTextViewStyle(TextView的,isBold);
private void setTextViewStyle(TextView view, boolean isBold){
if (view == null)
return;
// if old typeface is null create new Typeface bold or def
Typeface oldTypeface = view.getTypeface() != null ? view.getTypeface() :
(isBold ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT);
view.setTypeface(
Typeface.create(oldTypeface, isBold ? Typeface.BOLD : Typeface.NORMAL)
);
}
我想到了'Html.fromHtml()'爲好,但是這使得切換粗體斜體和下劃線seperatly相當困難的,不是嗎? – user1555863
這不是直接的,但我不相信你有另一種選擇,因爲文本樣式是針對TextView中的所有文本的。根據你想要做的事情,你可以修改你的佈局,併爲粗體/下劃線/斜體分別提供不同的視圖,但這隻適用於非常靜態的用例。 – Flynn81
@ Flynn81這就是我所做的,如果我設置了BOLD_ITALIC或BOLD並且想要關閉BOLD部分,我必須知道文本的當前狀態,除非獲得字體並詢問'isBold()','isItalic ()' – ilomambo