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的样式 运行前的效果:
运行后的效果: