Apakah ini mungkin untuk menyetel textSize yang berbeda dalam satu TextView? Saya tahu bahwa saya dapat mengubah gaya teks menggunakan:
TextView textView = (TextView) findViewById(R.id.textView);
Spannable span = new SpannableString(textView.getText());
span.setSpan(arg0, 1, 10, arg3);
textView.setText(span)
Saya tahu rentang mulai ... akhir teks Saya ingin mengubah ukuran. Tapi apa yang bisa saya gunakan sebagai arg0
dan arg3
?
textView.setText(span)
.Saya tahu sangat terlambat untuk menjawabnya tetapi orang-orang mungkin masih memiliki pertanyaan yang sama. Bahkan saya berjuang keras dalam hal ini. Misalkan Anda memiliki dua string ini di dalam file strings.xml Anda
<string name="my_text">You will need a to complete this assembly</string> <string name="text_sub1">screwdriver, hammer, and measuring tape</string>
Anda sekarang perlu menentukan dua Style untuk mereka di dalam style.xml Anda dengan textSize berbeda
<style name="style0"> <item name="android:textSize">19sp</item> <item name="android:textColor">@color/standout_text</item> <item name="android:textStyle">bold</item> </style> <style name="style1"> <item name="android:textSize">23sp</item> <item name="android:textColor">@color/standout_light_text</item> <item name="android:textStyle">italic</item> </style>
Sekarang dari file Java Anda, Anda perlu menggunakan spannable untuk memuat dua gaya dan string ini pada textView tunggal
SpannableString formattedSpan = formatStyles(getString(R.string.my_text), getString(R.string.text_sub0), R.style.style0, getString(R.string.main_text_sub1), R.style.style1); textView.setText(formattedSpan, TextView.BufferType.SPANNABLE);
Di bawah ini adalah metode formatStyles yang akan mengembalikan string yang telah diformat setelah menerapkan gaya
private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1) { String tag0 = "{0}"; int startLocation0 = value.indexOf(tag0); value = value.replace(tag0, sub0); String tag1 = "{1}"; int startLocation1 = value.indexOf(tag1); if (sub1 != null && !sub1.equals("")) { value = value.replace(tag1, sub1); } SpannableString styledText = new SpannableString(value); styledText.setSpan(new TextAppearanceSpan(getActivity(), style0), startLocation0, startLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (sub1 != null && !sub1.equals("")) { styledText.setSpan(new TextAppearanceSpan(getActivity(), style1), startLocation1, startLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } return styledText; }
sumber
Coba dengan AbsoluteSizeSpan
snackbarText.setSpan(new AbsoluteSizeSpan(fontsize, true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Kode lengkapnya adalah:
SpannableStringBuilder snackbarText = new SpannableStringBuilder(); snackbarText.append("Your text"); snackbarText.setSpan(new AbsoluteSizeSpan(fontsize, true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); Snackbar.make(getCurrentFocus(), snackbarText, Snackbar.LENGTH_LONG).setAction("Action", null).show();`
sumber