2015-07-12 26 views
1

我想在同一編輯文本中爲不同部分的文本創建不同的字體。我已經嘗試這樣做來改變字體:Android:爲輸入的新文本更改編輯文本的字體

Typeface myFont = Typeface.createFromAsset(getAssets(), "droid-sans.ttf"); 
myEditText.setTypeface(myFont, Typeface.BOLD); 

我正在使用一個按鈕來使文本大膽。

但是,這改變了EditText中已存在的整個文本的字體!我想保留現有的文本格式,並在單擊「粗體」按鈕後更改將要輸入的文本的字體。

+0

檢查了這一點http://stackoverflow.com/questions/13227670/using-custom-font-for-part-of-a-text – sowmia

+0

如果我們想改變字體在這不會是一個解決辦法運行。字體應該在運行時應用於文本,因爲用戶輸入到EditText – pg18

回答

0

您正在尋找Spannable接口。您可以使用它來更改EditText或TextView的不同部分的字體。

這是一個示例代碼,用於將所選文本轉換爲ITALIC。

Spannable str = mBodyText.getText(); 
if(mBodyText.getSelectionEnd() > mBodyText.getSelectionStart()) 
    str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 
         mBodyText.getSelectionStart(), mBodyText.getSelectionEnd(), 
         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
else 
    str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 
       mBodyText.getSelectionEnd(), 
       mBodyText.getSelectionStart(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
+0

請您解釋我,我如何使用它來改變字體「在飛行中」。如果我按下加粗按鈕,按下按鈕後將鍵入的文本應該變粗。您正在處理選定的文本。 – pg18

+0

順便說一句,我想出了辦法做到這一點。你的答案有效。非常感謝 !! – pg18

相關問題