2012-08-23 82 views
0

我有一個預裝了一些內容的textview。我想要的是用英文顯示某些中文內容的某些部分。比如說我有三段英文,那麼每段這樣的段落都要跟着中文段落。由於長度不同,我無法跨越內容。請爲我提供此解決方案或更好的替代方案。Android TextView使用多種字體(語言)

謝謝:)

回答

0

你可以嘗試想通了這個示例:

TextView text = new TextView(context); 
text.setText(Html.fromHtml("<b>" + "some text" + "</b>" + "<br />" + 
      "<small>" + "some text" + "</small>" + "<br />" + 
      "<small>" + "some text" + "</small>")); 
+0

:感謝回答花花公子,但是這不會做.. – user1619612

1

您可以像這樣格式化的HTML方式:

MyTypeFace.class

package my.app; 
import android.graphics.Paint; 
import android.graphics.Typeface; 
import android.text.TextPaint; 
import android.text.style.TypefaceSpan; 

public class MyTypeFace extends TypefaceSpan { 
private final Typeface newType; 
public MyTypeFace(String family, Typeface type) { 
    super(family); 
    newType = type; 
} 
@Override 
public void updateDrawState(TextPaint ds) { 
    applyCustomTypeFace(ds, newType); 
} 
@Override 
public void updateMeasureState(TextPaint paint) { 
    applyCustomTypeFace(paint, newType); 
} 
private static void applyCustomTypeFace(Paint paint, Typeface tf) { 
    int oldStyle; 
    Typeface old = paint.getTypeface(); 
    if (old == null) { 
     oldStyle = 0; 
    } else { 
     oldStyle = old.getStyle(); 
    } 
    int fake = oldStyle & ~tf.getStyle(); 
    if ((fake & Typeface.BOLD) != 0) { 
     paint.setFakeBoldText(true); 
    } 
    if ((fake & Typeface.ITALIC) != 0) { 
     paint.setTextSkewX(-0.25f); 
    } 
    paint.setTypeface(tf); 
} 
} 

現在,只需繼續從String.xml中獲取故事,在其上應用字體並顯示它們。

String text1=findViewById(R.string.text1); 
String text2=findViewById(R.string.text2); 

TextView textView = (TextView) findViewById(R.id.custom_fonts); 
txt.setTextSize(30); 
Typeface font1 = Typeface.createFromAsset(getAssets(), "english.ttf"); 
Typeface font2 = Typeface.createFromAsset(getAssets(), "chinese.ttf"); 
text1.setSpan (new MyTypeFace("", font1), 0, 4,Spanned.SPAN_EXCLUSIVE_INCLUSIVE); 
text2.setSpan (new MyTypeFace("", font2), 4, 11,Spanned.SPAN_EXCLUSIVE_INCLUSIVE); 
String totalText=text1+"<br>"+text2; 
textView.setText(Html.fromHtml(totalText)); 
+0

感謝回答,但我認爲這不會解決我的問題。我曾提到,每對英語,必須接着在第chinese ...如果我使用兩個字符串變量,它們將包含enitre數據n格式化並不容易......這就像我們如何將內容從一種語言翻譯到另一種語言,所以我想要解決方案。 – user1619612

+0

請檢查我的編輯。 –

+0

感謝您的回覆,但即使這不會正常工作...讓我給你一些例子,可能會幫助你出來..說我有一個英文故事倪想要它被翻譯成中文..現在使用字符串.xml在資源中我設置了textview的內容..我在5段中有故事...所以我在英格里格顯示第一段,然後是中文段..所以我需要有2種字體字體,一種用於第二,我可能有100個這樣的故事,其段數可能從1變化到任何給定的整數,所以我不能初始化i = 10或任何其他數字。 – user1619612