本篇章主要介绍textView 一些在开发中经常用到的点,方便自己日后查阅。
中划线:
textview.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
下划线:
textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
取消
textview.getPaint().setFlags(0)
法一:这个更加常用和方便
Drawable rightDrawable = mContext.getResources().getDrawable(R.drawable.arrow_right);
saleCardViewHolder.couponDetailTv.setCompoundDrawablesWithIntrinsicBounds(null, null, rightDrawable, null);
saleCardViewHolder.couponDetailTv.setCompoundDrawablePadding(Dp2PxUtil.dip2px(mContext, 5F));
法二:设置drawable 之前,drawable要设置bounds,否则会出错
Drawable rightDrawable = mContext.getResources().getDrawable(R.drawable.arrow_right);
rightDrawable.setBounds(0, 0, rightDrawable.getMinimumWidth(), rightDrawable.getMinimumHeight());
saleCardViewHolder.couponDetailTv.setCompoundDrawables(null, null, rightDrawable, null);
saleCardViewHolder.couponDetailTv.setCompoundDrawablePadding(Dp2PxUtil.dip2px(mContext, 5F));
注意:如果一个TextView 宽度为整个屏幕,这时候如果需要drawableLef 和文字居中显示,用gravity = center, 发现只有文字居中,drawable 没有居中,这时候可以怎么办呢?
其实可以想一想 textView 怎么画drawable ,弄清楚这个地方,可以自定义重写这一块。(参考 链接, 但这个效果并不理想,就是drawable 和文字之间的距离无法控制,可以在深究一下 如何实现更好的效果)
这也是一个常见的需求,当我们不想用多个控件实现时,整体来说有这样的几种方式:
// 这种方式比较灵活,可以针对不同国家的语言做出不同的响应 ;另外可以同时作用大小和颜色、斜体、加粗等html 样式
<string name="renewal_loan_text_tip"> <![CDATA[
<b style="color: #31445D">Plg Yth, mohon perhatikan bahwa Anda hanya <i><font color=#FFCD3C>akan mendapatkan 1 pinjaman</font></i> dari yang Anda pilih, berdasarkan skor kredit Anda.</b>
]]></string>
textViewContent.setText(Html.fromHtml(mContext.getResources().getString(R.string.renewal_loan_text_tip)));
还有一种就是通过span 来实现,有颜色、字体大小、下划线、删除线、点击事件各种sapn, 然后根据需求来去使用;也可以把这些span 组合起来,效果就比较强大了。举个例子:
SpannableString styledText = new SpannableString("Android,你好");
styledText.setSpan(new TextAppearanceSpan(this, R.style.style0), 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
styledText.setSpan(new TextAppearanceSpan(this, R.style.style1), 3, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setText(styledText, TextView.BufferType.SPANNABLE);
关于span 可以参考:span。关于span ,有 SpannableString 和 SpannableStringBuilder 两种载体。