我有一個預裝了一些內容的textview。我想要的是用英文顯示某些中文內容的某些部分。比如說我有三段英文,那麼每段這樣的段落都要跟着中文段落。由於長度不同,我無法跨越內容。請爲我提供此解決方案或更好的替代方案。Android TextView使用多種字體(語言)
謝謝:)
我有一個預裝了一些內容的textview。我想要的是用英文顯示某些中文內容的某些部分。比如說我有三段英文,那麼每段這樣的段落都要跟着中文段落。由於長度不同,我無法跨越內容。請爲我提供此解決方案或更好的替代方案。Android TextView使用多種字體(語言)
謝謝:)
你可以嘗試想通了這個示例:
TextView text = new TextView(context);
text.setText(Html.fromHtml("<b>" + "some text" + "</b>" + "<br />" +
"<small>" + "some text" + "</small>" + "<br />" +
"<small>" + "some text" + "</small>"));
您可以像這樣格式化的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));
感謝回答,但我認爲這不會解決我的問題。我曾提到,每對英語,必須接着在第chinese ...如果我使用兩個字符串變量,它們將包含enitre數據n格式化並不容易......這就像我們如何將內容從一種語言翻譯到另一種語言,所以我想要解決方案。 – user1619612
請檢查我的編輯。 –
感謝您的回覆,但即使這不會正常工作...讓我給你一些例子,可能會幫助你出來..說我有一個英文故事倪想要它被翻譯成中文..現在使用字符串.xml在資源中我設置了textview的內容..我在5段中有故事...所以我在英格里格顯示第一段,然後是中文段..所以我需要有2種字體字體,一種用於第二,我可能有100個這樣的故事,其段數可能從1變化到任何給定的整數,所以我不能初始化i = 10或任何其他數字。 – user1619612
:感謝回答花花公子,但是這不會做.. – user1619612