Android开发 TextView的开发记录

前言

  此篇博客是记录一些TextView开发上一些少用的开发功能项.目前开发记录以下:java

  •   添加省略号
  •   实现长文的收起和展开功能
  •   改变一个字符串里自定字符的颜色或者大小

  

添加省略号

android:maxLines="2"
android:ellipsize="end"

实现长文的收起和展开功能

关键一  在TextView里面的getLayout方法

/**
     * Gets the {@link android.text.Layout} that is currently being used to display the text.
     * This value can be null if the text or width has recently changed.
     * @return The Layout that is currently being used to display the text.
     */
    public final Layout getLayout() {
        return mLayout;
    }

关键二  在Layout里的getEllipsisCount方法

 /**
     * Returns the number of characters to be ellipsized away, or 0 if
     * no ellipsis is to take place.
     */
    public abstract int getEllipsisCount(int line);

使用方式

//获取省略的字符数,0表示没省略
int ellipsisCountholder = textView.getLayout().getEllipsisCount(holder.content.getLineCount()-1);

注意,TextView还在初始化的时候getLayout()可能会返回null,因此须要在TextView初始化测绘完成后获取.以下:

holder.content.post(new Runnable() {
                @Override
                public void run() {
                    //获取省略的字符数,0表示没和省略
                    int ellipsisCountholder = holder.content.getLayout().getEllipsisCount(holder.content.getLineCount()-1);
                    if (ellipsisCountholder != 0){
                        holder.telescopicContent.setText("全文");
                        holder.telescopicContent.setVisibility(View.VISIBLE);
                    }

                }
            });

去上面的代码配合,实现TextView的收起与展开

viewHolder.telescopicContent.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (viewHolder.telescopicContent.getText().equals("全文")){
                        viewHolder.telescopicContent.setText("收起");
                        viewHolder.content.setMaxLines(50);

                    }else {
                        viewHolder.telescopicContent.setText("全文");
                        viewHolder.content.setMaxLines(4);

                    }

                }
            });

改变一个字符串里自定字符的颜色或者大小

   SpannableString spannableString = new SpannableString("今每天气不错");
    spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), 2, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    tv5.setText(spannableString);

setSpan方法有四个参数,android

第一个参数:ForegroundColorSpan是为文本设置前景色,也就是文字颜色。若是要为文字添加背景颜色,可替换为BackgroundColorSpan。ide

第二个参数:文本颜色改变的起始位置post

第三个参数:文本颜色改变的结束位置。spa

最后一个参数为布尔型,能够传入如下四种:code

  • Spanned.SPAN_INCLUSIVE_EXCLUSIVE 从起始下标到终止下标,包括起始下标
  • Spanned.SPAN_INCLUSIVE_INCLUSIVE 从起始下标到终止下标,同时包括起始下标和终止下标
  • Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 从起始下标到终止下标,但都不包括起始下标和终止下标
  • Spanned.SPAN_EXCLUSIVE_INCLUSIVE 从起始下标到终止下标,包括终止下标
相关文章
相关标签/搜索