web-dev-qa-db-ja.com

Androidで同じtextviewに太字と通常のテキストを含める方法は?

インターネットを検索して次のコードを試しましたが、機能しません

SpannableString ss1 = new SpannableString("Health: ");
           ss1.setSpan(new Android.text.style.StyleSpan(Android.graphics.Typeface.BOLD), 0, ss1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            textview1.setText("\n"+ss1+strhealth+"\n\n");

出力をこのようにしたいHealth: good

where strhealth = goodしかし、それは出てきますHealth:good間違いは何ですか?

Android studio 2.1.1を使用しています

15
G.ONE
 String txt1="Health: ";
 SpannableString txtSpannable= new SpannableString(txt1);
 StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
 txtSpannable.setSpan(boldSpan, 0, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

 builder.append(txtSpannable);

 String txt2="good";
 builder.append(txt2);

 textview1.lblStatus.setText(builder, TextView.BufferType.SPANNABLE);
14
dindinii

最も簡単な方法は

textview1.setText(Html.fromHtml("<b>Health:</b> good"));

コードの誤りは、ここで文字列連結を使用することです:"\n"+ss1+strhealth+"\n\n"これは、コンポーネントが通常の文字列として扱われるため、すべてのフォーマットを取り除きます。

7
Henry

少し遅れて答えてしまいましたが、ここに用意されている答えを使って簡単に使える方法を作りました。

    private void setSpanString(String string1, String string2, TextView textView) {
    SpannableStringBuilder builder=new SpannableStringBuilder();
    SpannableString txtSpannable= new SpannableString(string1);
    StyleSpan boldSpan = new StyleSpan(Typeface.BOLD);
    txtSpannable.setSpan(boldSpan, 0, string1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    builder.append(txtSpannable);
    builder.append(string2);
   textView.setText(builder, TextView.BufferType.SPANNABLE);
}
5
Umar Ata

次のような文字列リソースを使用します。

<string name="health_status"><b>Health:</b> %1$s</string>

ヘルスステータスを設定する場合は、次のコードを使用します。

String ss1 = getString(R.string.health_status, strhealth);
4

Kotlinでは、これを行うことができます。これを使用して、文字列内の文字/単語を太字にします。例えば:

item = "フィリピン"

query = "Phil"

結果= Phil ippines

    val spannable = SpannableString(item)
    val indexStart = item.indexOf(query)
    val indexEnd = indexStart + query.length
    spannable.setSpan(StyleSpan(Typeface.BOLD), indexStart, indexEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

textView.text = spannable


以下では、KotlinでspannableStringを作成できるコードについて説明しました

val spannableStringBuilder = SpannableStringBuilder()

val boldSpan: StyleSpan = StyleSpan(Typeface.BOLD)

sp_text.setSpan(boldSpan, firstIndex, lastIndex,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

sp_text.setSpan(clickableSpan, firstIndex, lastIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
            sp_text.setSpan(ForegroundColorSpan(ContextCompat.getColor(mContext, R.color.colorPrimary)), firstIndex, lastIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
1
Ashok Songara

私はあなたが2つの異なるtextView、ラベルと1つをデータに使うべきだと思います。それは一般的で良い習慣です

0
theyouishere