私のAndroidアプリはTextViewにテキストを表示しています。
イタリックにしたい単語を囲むタグなどはありますか?文全体がそのようになるため、TextViewを斜体に設定する必要はありません。また、斜体の特定の単語のみが必要です。
Spannableを使用する必要があります。例については、Is there any example about Spanned and Spannable textを参照してください。
同意します。これはデータベースの問題ではありません。これがあなたが取り組んでいるカスタム アプリでない場合は、運が悪いです。そうである場合は、フィールドをデータベースに HTML として保存します。
この関数は、文字列を TextView のテキストとして設定し、その文字列内の 1 つまたは複数のスパンがタグ [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);
}
解決策は、データベースのコンテンツをHTMLとして保存してから、テキストビューにHTMLを出力することです。
次の記事を参照してください:TextViewでHTMLを表示する方法は?