android中一個TextView實現不同的樣式
時間 2021-08-15
標籤
android
textview
String
android中一個TextView實現不同的樣式
第一步:
styles文件中設置要顯示的不同的樣式,因爲要顯示不同的樣式,所以樣式至少需要設置兩個。
<style name="mText_style1">
<item name="android:textSize">12sp</item> 根據需要自行添加
<item name="android:textColor">#00ff00</item>
</style>
<style name="mText_style2">
<item name="android:textSize">12sp</item>
<item name="android:textColor">#ff0000</item>
</style>
第二步:
xml文件中添加TextView標籤
<TextView
android:gravity="center"
android:id="@+id/mText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="將要實現不同的樣式,這是效果"
/>
第三步:
獲取TextView後,設置樣式
mText = (TextView) findViewById(R.id.mText);
// 首先拿到TextView內容的長度
int len = mText.getText().length();
//創建SpannableString對象,參數爲TextView的內容
SpannableString mSpannableString = new SpannableString(mText.getText().toString());
//開始設置第一種樣式
mSpannableString.setSpan(new TextAppearanceSpan(getActivity(), R.style.money_style2)
, 0, len - 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//開始設置第二種樣式
mSpannableString.setSpan(new TextAppearanceSpan(getActivity(), R.style.money_style1)
, len - 4, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//根據需求,可以這是N種樣式,如果設置了相同開始位置和結束位置的樣式,以最後設置的爲準。
//把設置完的樣式賦值TextView 用於顯示出來。
mText.setText(mSpannableString);
mSpannableString.setSpan(Object what, int start, int end, int flags)
// Object what new TextAppearanceSpan(getActivity(), 樣式) 樣式即 styles 設置的樣式
// int start 開始的位置
// int end 結束的位置
// int flags Spannable的樣式
運行前的效果:
運行後的效果: