Abdroid05 Textview一些mark

作者: silencefun | 来源:发表于2016-10-11 15:52 被阅读153次

    0.基本 操作 强制换行  自动换行

    这个 “\n”换行

    在xml中添加属性:

    android:ellipsize="none"

    android:maxLines="100"

    android:scrollHorizontally="false"

    1.Textview 代码设置不同颜色

    如在adapter中 

    holder.tv_body.setText("回复"+ item.getReplynickname() +": "+ item.getContent().toString());

    // 被回复人黄色 设定要回复名字的长度

    SpannableStringBuilder builder =newSpannableStringBuilder(

    holder.tv_body.getText().toString());

    ForegroundColorSpan linkColorSpan =newForegroundColorSpan(

    Color.argb(255,255,221,0));

    int length = item.getReplynickname().length();

    builder.setSpan(linkColorSpan,2,2+ length,

    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    holder.tv_body.setText(builder);

    2.Textview draw方向 代码替换图片

    示例为左边

    Drawable drawable =ContextCompat.getDrawable(context,R.drawable.user_icon_zan_true);

    drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());

    holder.tv_zan.setCompoundDrawables(drawable, null, null, null);

    3.Textiew 单行显示省略点

    添加

    android:singleLine="true"

    android:ellipsize="end"

    之外

    android:ellipsize = "start"   省略号在开头

    android:ellipsize = "middle"     省略号在中间

    android:ellipsize = "marquee"  跑马灯

    但是

    你set的字符串最后一个字符是一个中文,显示的省略号就是三个点,如果是英文的那么有可能只显示一个点或者两个点。

    copy 别人的解决办法

    mTvUser.post(newRunnable() {

         @Override

           public void run() {

                     String ellipsizeStr = (String) TextUtils.ellipsize(mInfo.nickname,

       (TextPaint) mTvUser.getPaint(), mTvUser.getMeasuredWidth() -10, TextUtils.TruncateAt.END);

    mTvUser.setText(ellipsizeStr);

    }

    });

    4.使用imagespan 进行图文混排

    String string=“XXXroleXXX”;//展示的所有文字

    String role="role";//要替换成image 的文字

    Drwable drawable=Activity.getResources().getDrawable(R.mipmap.icon);

    drawable.setBounds(dip2px(context,3),dip2px(context,5),dip2px(.context,37),dip2px(context,18));

    //具体的大小展示效果要比对Textview的字体大小进行调整 dip2px dp转换px工具

    SpannableString spannable =newSpannableString(string);

    //要让图片替代指定的文字就要用ImageSpan 指定的文字

    ImageSpan span =newImageSpan(drawable,ImageSpan.ALIGN_BASELINE);

    //开始替换,注意第2和第3个参数表示从哪里开始替换到哪里替换结束(start和end)

    //最后一个参数类似数学中的集合,[5,12)表示从5到12,包括5但不包括12

    //

    spannable.setSpan(span,string.indexOf(role),string.indexOf(role) + role.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    textview.setText(spannable);

    5.多个Textview不同大小尺寸对齐

    需要对齐的Textview中 都要写统一 比如这是 下边底部对齐。 

    android:layout_gravity="bottom"

    android:gravity="center_horizontal|bottom"

    android:includeFontPadding="false"

    相关文章

      网友评论

        本文标题:Abdroid05 Textview一些mark

        本文链接:https://www.haomeiwen.com/subject/yuhbyttx.html