我是靠谱客的博主 轻松芹菜,最近开发中收集的这篇文章主要介绍Android之TextView显示总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用TextView可以实现如下的功能:

1.显示丰富的文本(URL、字体大小、颜色等)

TextView中预定了一些类似Html的标签,通过标签可以使TextView显示不同的颜色、大小、字体的文字。

  • <font> : 设置颜色和字体
  • <big>: 设置大号
  • <small>: 设置小号
  • <i><b>: 斜体、粗体
  • <a>: 链接地址
  • <img>: 插入图片

代码实现字体加粗效果:

TextView tv = (TextView)findViewById(R.id.TextView01);

TextPaint tp = tv.getPaint();

tp.setFakeBoldText(true);

使用这些标签可以使用Html.fromHtml方法:

String htmlStr = "<font color='#0000FF' size='50px'>蓝色文本</font><br><font color='#ff0000' size='40px'>红色文本</font><br><font color='#000000' size='29px'>黑色文本</font>";

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextView = new TextView(this);
    mTextView.setText(Html.fromHtml(htmlStr));
}

2.将文本中的URL地址、邮箱地址、电话产生超链接的效果

使用android:autoLink来设置,首先在的layout文件夹里面TextView控件增加

android:autoLink="all"

然后在Java中进行设置:

textview.setMovementMethod(LinkMovementMethod.getInstance());

这样展示出现的内容就可以出现超链接的效果。

例如,在TextView点击网址链接后,就可以调转到浏览器并打开响应的链接。内容可以是Html格式的内容,也可以是String格式的,在使用Html显示超链接的时候,必须保证添加上协议好,例如:http://。否则在识别网址的时候,不加的话,可能会判断为Activity,然后导致崩溃。

使用String格式的内容,在TextView添加setAutoLinkMask(Linkify.ALL)设置之后,可以不加协议识别出来链接,但是推荐还是加上。而这两种方法,都得设置一下setMovementMethod,才会跳转。   

3.TextView显示表情图像和文字

如果需要在TextView里面展示res资源里面的图片的话,可以通过编写html内容,并通过Html.fromHtml方法来将内容转换为CharSequence来显示。

显示的核心代码:

String html = "图像1<image='image1'>";  // 其中image1就是图片在drawable的name

Html.fromHtml(html, new ImageGetter() {

    @Overrride
    public Drawable getDrawable(String source) {

         Drawable drawable = getResource.getDrawable(getResourceId(source));
         return drawable;
    }
}

public int getResourceId(String name) {

    try {
        // 根据资源ID的变量名获得Field的对象,使用反射机制来实现的
        Field field = me.renhui.drag_sort_listview.R.drawable.class.getField(name);

        // 取得并返回资源的id的字段(静态变量)的值,使用反射机制
        return Integer.parseInt(field.get(null).toString());

    } catch (Exception e) {
        e.printStackTrace();
    }

    return 0;
} 

4.TextView单击链接触发点击事件(本例事件是弹出Activity也可以替换为其他事件)

通过对TextView的内容设置span来给TextView设置点击事件,这样的话就能够通过点击点击TextView中的链接来弹出Activity

String text1 = "弹出Activity1";
String text2 = "弹出Activity2";、

SpannableString spannableString  = new SpannableString (text1);
SpannableString spannableString2  = new SpannableString (text2);

spannableString.setSpan(new ClickableSpan() {

    @Overrride
    public void onclick(View widge) {
          // TODO 实现弹出逻辑
    }   

}, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

 

5.TextView实现跑马灯的效果

基本的实现方式就是在xml设置TextView的属性:

        <TextView
            android:id="@+id/txt"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="123456789"
            android:gravity="center"
            android:textSize="@dimen/sp_18"
            android:textColor="@color/white"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:focusable="true"
            android:focusableInTouchMode="true"/>

6. TextView 实现删除线的效果

基本实现逻辑

//中间横线
textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG );
 
//但是单纯使用这句话,会发现,TextView里面的内容出现锯齿的现象
//抗锯齿
textview.getPaint().setAntiAlias(true);

//下划线
textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);

7. TextView 出现异常换行的处理方法:

   // 半角转换成全角
   private String toSBC(String input) {
        char c[] = input.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == ' ') {
                c[i] = 'u3000';
            } else if (c[i] < '177') {
                c[i] = (char) (c[i] + 65248);
            }
        }
        return new String(c);
    }

  
    // 全角转换成半角
    private String toDBC(String input) {
        char[] c = input.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == 12288) {
                //全角空格为12288,半角空格为32
                c[i] = (char) 32;
                continue;
            }
            if (c[i] > 65280 && c[i] < 65375)
                //其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
                c[i] = (char) (c[i] - 65248);
        }
        return new String(c);
    }

 

 8. TextView 一行,最多显示10个字符,剩余的用...代替:

// 单行显示
mTitleTxt.setSingleLine(); 

// 最大十个字符
mTitleTxt.setMaxEms(10); 

// 剩余的以...结尾
mTitleTxt.setEllipsize(TextUtils.TruncateAt.END); 

9. TextView 展示字母的时候,明明是小写,但界面上看到的都是大写 解决方案

<!-- 添加属性: -->
android:textAllCaps="false"

 

10.Textview实现高亮显示 (总结的文章:总结

TextView showMoreContent=(TextView)findviewbyid(R.id.showMoreContent);
SpannableString span=new SpannableString(showMoreContent.getText().toString()); 
span.setSpan(new ForegroundColorSpan(Color.RED), 0, showMoreContent.getText().toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//new ForegroundColorSpan()设置文字高亮显示

span.setSpan(new UnderlineSpan(), 0, showMoreContent.getText().toString().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//new UnderlineSpan()设置文字下划线

showMoreContent.setText(span);

 

最后

以上就是轻松芹菜为你收集整理的Android之TextView显示总结的全部内容,希望文章能够帮你解决Android之TextView显示总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部