インターネットを検索して次のコードを試しましたが、機能しません
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を使用しています
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);
最も簡単な方法は
textview1.setText(Html.fromHtml("<b>Health:</b> good"));
コードの誤りは、ここで文字列連結を使用することです:"\n"+ss1+strhealth+"\n\n"
これは、コンポーネントが通常の文字列として扱われるため、すべてのフォーマットを取り除きます。
少し遅れて答えてしまいましたが、ここに用意されている答えを使って簡単に使える方法を作りました。
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);
}
次のような文字列リソースを使用します。
<string name="health_status"><b>Health:</b> %1$s</string>
ヘルスステータスを設定する場合は、次のコードを使用します。
String ss1 = getString(R.string.health_status, strhealth);
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)
私はあなたが2つの異なるtextView、ラベルと1つをデータに使うべきだと思います。それは一般的で良い習慣です