TextView 花里胡哨的用法 - SpannableStringBuilder
16lz
2021-01-26
一个新需求,要做一个提示框,提示框中的文本,个别文本是需要有点击事件,并且要设置颜色,所以有了此文。
//声明private TextView mAgreement, thinkAgreementTv;
//搞一个 TextViewmAgreement = (TextView) findViewById(NBResFinder.getId(sContext, "id", "agreementTv"));
/** * 文本中字体的处理 */ private void explanatoryTextInit() { SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); // \n 换行;\r 回车 ; \u3000\u3000 文本空格 spannableStringBuilder.append("\r\u3000\u3000过段时间我还会陆续公布一些更好玩的模型。过段时间我还会陆续公布一些更好玩的模型。\r\n\u3000\u3000接下来准备上线道路障碍物识别过段时间我还会陆续公布一些更好玩的模型。\n"); //给 textView 中加个图 spannableStringBuilder.setSpan(new ImageSpan(sContext, R.drawable.ico5), 19, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); ClickableSpan clickPrivacyAgreement = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(sContext,"点击了",Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); /**** 这里是对你指定的第6-10个字的处理: ****/ //设置下划线,默认是有下划线的,false 是去掉下划线 ds.setUnderlineText(false); //设置颜色,默认是蓝色,我这里设置成红色了 ds.setColor(sContext.getResources().getColor(R.color.nb_red)); //设置字体大小 ds.setTextSize(50); //setFlags 设置: //设置删除线// ds.setFlags(TextPaint.STRIKE_THRU_TEXT_FLAG); //设置粗体// ds.setFlags(TextPaint.FAKE_BOLD_TEXT_FLAG); //设置粗体,也可以这样 ds.setFakeBoldText(true); } }; //选中第六个到第十个文字 spannableStringBuilder.setSpan(clickPrivacyAgreement, 6, 10, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); mAgreement.setText(spannableStringBuilder); //点击默认会有颜色出现,去掉点击后的颜色: //还可以直接写布局中,这样:android:textColorHighlight="#ffffff" mAgreement.setHighlightColor(Color.parseColor("#ffffff")); //设置光标如何移动计量的方法。这句不加的话,点击事件不生效 mAgreement.setMovementMethod(LinkMovementMethod.getInstance()); }
更多相关文章
- 安卓开发----TextView控件属性列表
- Qt Android(安卓)QScreen 屏幕旋转功能
- EditText_XML属性
- Android(安卓)属性动画(Property Animation) 完全解析 (下)
- android美化ToggleButton
- Android(安卓)用HorizontalScrollView实现ListView的Item滑动删
- Android(安卓)动态指定屏幕朝向,动态设置控件位置大小
- Android模拟器上网的设置
- android-自定义Seekbar