Android开发Android技术知识Android开发

Android textview常用样式

2018-08-10  本文已影响22人  淡淡_孩子气
文字竖直显示

设置TextView的android:ems="1"

身份证号码隐藏出生年月日期
//隐藏身份证号码出生年月
public static final String ID_CARD_HIDE = "(\\d{6})\\d{8}(\\w{4})";
String idCardHide = idCard.replaceAll(ID_CARD_HIDE, "$1*****$2");
textView.setText(idCardHide);

设置图标
1、布局里设置

设置TextView的drawableLeft、drawableRight、drawableTop、drawableBottom属性

<TextView
            android:id="@id/common_timeline"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawablePadding="5dp"
            android:drawableTop="@drawable/ico_wx_time_line3"
            android:gravity="center"
            android:text="@string/share_hint_2"
            android:textSize="13sp"
            android:textColor="@android:color/white"/>
image.png
2、代码中设置
Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.ico_go_list);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
textView.setCompoundDrawables(null, null, drawable, null);
//设置间距
textView.setCompoundDrawablePadding(getApp().getPadding(5));
textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon, 0);

部分字体样式

通过SpannableStringBuilder对象我们可以设置textview的各种样式(EditText同样适用)

SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(textView.getText());
//字体
spannableStringBuilder.setSpan(new TypefaceSpan("PingFangSC-Semibold"),0,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//字体颜色
spannableStringBuilder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.yellow_color2)),0,14,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//字体背景色
spannableStringBuilder.setSpan(new BackgroundColorSpan(Color.YELLOW), 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
//字号
spannableStringBuilder.setSpan(new AbsoluteSizeSpan(18,true),0,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//粗体、斜体
spannableStringBuilder.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 1, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//删除线
spannableStringBuilder.setSpan(new StrikethroughSpan(), 2, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//下划线
spannableStringBuilder.setSpan(new UnderlineSpan(), 1, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
//字体换图片
Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);  
drawable .setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());  
spanString.setSpan(new ImageSpan(d, ImageSpan.ALIGN_BASELINE), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//最后--设置属性
textView.setText(spannableStringBuilder);

部分文字可点击

直接上代码

import android.text.TextPaint;
import android.text.style.ClickableSpan;
import android.view.View;

/**
 * 文字链接样式-可自定义颜色(默认无下划线)
 */
public class TextClickableSpan extends ClickableSpan {

    private OnClickSpanListener onClickSpanListener;
    private int color;

    @Override
    public void onClick(View view) {
        if (onClickSpanListener != null)
            onClickSpanListener.onClickTextSpan(view);
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(color);
        ds.setUnderlineText(false);
    }

    public void setOnClickSpanListener(OnClickSpanListener onClickSpanListener) {
        this.onClickSpanListener = onClickSpanListener;
    }

    public void setColor(int color) {
        this.color = color;
    }

    public interface OnClickSpanListener {
        void onClickTextSpan(View view);
    }
}
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(textView.getText());
//设置部分文字可点击
TextClickableSpan textClickableSpan = new TextClickableSpan();
textClickableSpan.setOnClickSpanListener(this);
textClickableSpan.setColor(getResources().getColor(R.color.blue_0076ff));
stringBuilder.setSpan(textClickableSpan, 7, textView.getText().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//这个记得设置,不然点击事件不生效
textView.setMovementMethod(LinkMovementMethod.getInstance()); textView.setHighlightColor(Color.TRANSPARENT);
textView.setText(stringBuilder);

重写方法:监听文字的点击事件

 @Override//在这里写文字点击监听事件
    public void onClickTextSpan(View view) {
        //todo
    }
上一篇 下一篇

猜你喜欢

热点阅读