1、常用属性
<TextView
android:id="@+id/text11" //组件id
android:layout_width="match_parent" //宽度
android:gravity="center" //内容对齐方式
android:layout_height="100dp" //高度
android:background="@drawable/back" //背景
android:autoLink="web" //web,phone等连接
android:text="www.baidu.com"/> //文本
android:textColor="@color/colorPrimaryDark" //文本颜色
android:focusable="true" //键盘状态下显示焦点
android:focusableInTouchMode="true" //触屏下显示焦点
android:marqueeRepeatLimit="marquee_forever" //重复滚动的次数
android:ellipsize="marquee" //文本显示模式 省略开头、中间、结尾、跑马灯
android:singleLine="true" //是否单行显示
/>
2、简单使用
xml文件
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".TextViewActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="5dp" android:paddingBottom="5dp" android:paddingRight="5dp" android:paddingLeft="5dp" android:gravity="center_horizontal"> <TextView android:id="@+id/text11" android:layout_width="match_parent" android:gravity="center" android:layout_height="100dp" android:background="@drawable/back" android:autoLink="web" android:text="www.baidu.com"/> <TextView android:id="@+id/text22" android:layout_centerHorizontal="true" android:layout_width="150dp" android:text="你 好" android:gravity="center" android:layout_height="wrap_content" android:layout_below="@id/text11" android:background="@drawable/shape_back_values"/> <TextView android:id="@+id/text33" android:layout_width="match_parent" android:gravity="center" android:layout_height="100dp" android:layout_below="@id/text22" android:layout_marginTop="5dp" android:background="#ffffff"/> <TextView android:id="@+id/text44" android:layout_width="match_parent" android:gravity="center" android:layout_height="100dp" android:layout_below="@id/text33" android:layout_marginTop="5dp" android:background="@drawable/back"/> <TextView android:id="@+id/text55" android:layout_width="match_parent" android:gravity="center" android:layout_height="100dp" android:layout_below="@id/text44" android:textColor="@color/colorPrimaryDark" android:layout_marginTop="5dp" android:background="#e2e2e2" android:text="手机卡打飞机as类方法的看反馈的反馈打开了反馈的反馈上课啦反馈代理费路径" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee" android:singleLine="true" /> </RelativeLayout> </android.support.constraint.ConstraintLayout>
Java文件
public class TextViewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_text_view); TextView t3 = (TextView)findViewById(R.id.text33); SpannableString span = new SpannableString("红色打电话斜体删除线绿色下划线图片:."); span.setSpan(new ForegroundColorSpan(Color.RED),0,2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new URLSpan("tel:1421323123"),2,5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new StyleSpan(Typeface.BOLD_ITALIC),5,7,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new StrikethroughSpan(),7,10,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new UnderlineSpan(),10,16,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new ForegroundColorSpan(Color.GREEN),10,13,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); Drawable d = ContextCompat.getDrawable(this,R.drawable.back); d.setBounds(0,0,50,50); ImageSpan imgSpan = new ImageSpan(d,ImageSpan.ALIGN_BASELINE); span.setSpan(imgSpan,18,19, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); t3.setText(span); // BackgroundColorSpan 背景色 // ClickableSpan 文本可点击,有点击事件 // ForegroundColorSpan 文本颜色(前景色) // MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter) // MetricAffectingSpan 父类,一般不用 // RasterizerSpan 光栅效果 // StrikethroughSpan 删除线(中划线) // SuggestionSpan 相当于占位符 // UnderlineSpan 下划线 // AbsoluteSizeSpan 绝对大小(文本字体) // DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。 // ImageSpan 图片 // RelativeSizeSpan 相对大小(文本字体) // ReplacementSpan 父类,一般不用 // ScaleXSpan 基于x轴缩放 // StyleSpan 字体样式:粗体、斜体等 // SubscriptSpan 下标(数学公式会用到) // SuperscriptSpan 上标(数学公式会用到) // TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色) // TypefaceSpan 文本字体 // URLSpan 文本超链接 TextView t4 = (TextView)findViewById(R.id.text44); StringBuilder sb = new StringBuilder(); for (int i=0;i<20;i++){ sb.append("好友" + i + ","); } String user =sb.substring(0,sb.lastIndexOf(",")).toString(); t4.setMovementMethod(LinkMovementMethod.getInstance()); t4.setText(addClickPart(user),TextView.BufferType.SPANNABLE); } //定义一个点击每个部分文字的处理方法 private SpannableStringBuilder addClickPart(String str) { //赞的图标,这里没有素材,就找个笑脸代替下~ Drawable d = ContextCompat.getDrawable(this,R.drawable.back); d.setBounds(0,0,50,50); ImageSpan imgspan = new ImageSpan(d,ImageSpan.ALIGN_BASELINE); SpannableString spanStr = new SpannableString("p."); spanStr.setSpan(imgspan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); //创建一个SpannableStringBuilder对象,连接多个字符串 SpannableStringBuilder ssb = new SpannableStringBuilder(spanStr); ssb.append(str); String[] likeUsers = str.split(","); if (likeUsers.length > 0) { for (int i = 0; i < likeUsers.length; i++) { final String name = likeUsers[i]; final int start = str.indexOf(name) + spanStr.length(); ssb.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(TextViewActivity.this, name, Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); //删除下划线,设置字体颜色为蓝色 ds.setColor(Color.BLUE); ds.setUnderlineText(false); } },start,start + name.length(),0); } } return ssb.append("等" + likeUsers.length + "个人觉得很赞"); } }
效果图