我的Android應用程序在TextView中顯示文本。當在Android上的TextView中取代某些詞時,是否有某種方法可以將其斜體化?
是否有任何標記或任何其前後,我想斜體字?我不需要將TextView設置爲斜體,因爲整個句子都是這樣的,我只需要用斜體表示特定的單詞。
我的Android應用程序在TextView中顯示文本。當在Android上的TextView中取代某些詞時,是否有某種方法可以將其斜體化?
是否有任何標記或任何其前後,我想斜體字?我不需要將TextView設置爲斜體,因爲整個句子都是這樣的,我只需要用斜體表示特定的單詞。
的解決辦法似乎是保存在TextView的在數據庫中的HTML內容,然後輸出HTML。
請參見下面的文章:How to display HTML in TextView?
我同意,這不是一個數據庫的問題。如果這不是您正在開發的定製應用程序,那麼您的運氣不好。如果是,請將數據庫中的字段保存爲HTML。
該函數將字符串設置爲TextView的文本,並且只要跨度或跨度用標記[i]和[/ i]標記,就將該字符串中的一個或多個跨度設爲斜體。當然,它可以修改爲其他類型的樣式。
private void doItalicize(TextView xTextView, String xString) {
ArrayList<Integer> IndexStart = new ArrayList<>();
ArrayList<Integer> IndexEnd = new ArrayList<>();
ArrayList<StyleSpan> SpanArray = new ArrayList<>();
int i = 0;
do {
IndexStart.add(i, xString.indexOf("[i]"));
IndexEnd.add(i, xString.indexOf("[/i]") - 3);
xString = xString.replaceFirst("\\[i\\]", "");
xString = xString.replaceFirst("\\[/i\\]", "");
xTextView.setText(xString, TextView.BufferType.SPANNABLE);
SpanArray.add(i, new StyleSpan(Typeface.ITALIC));
Log.d(LOG_TAG, "i: " + i);
i++;
} while (xString.contains("[i]"));
Spannable xSpannable = (Spannable) xTextView.getText();
for (int j = 0; j < i; j++)
xSpannable.setSpan(SpanArray.get(j), IndexStart.get(j), IndexEnd.get(j), Spanned
.SPAN_EXCLUSIVE_EXCLUSIVE);
}