安卓端小问题巧解记录
RecyclerView刷新单个item(notifyItemXXXX)导致闪烁的问题解决方案:
1.调用RecyclerView的adapter的setHasStableIds方法穿参数为true , "adapter.setHasStableIds(true)"
2.重写RecyclerView的adapter的getItemId方法,返回position
3.将Recyclerview的itemAnimator 设置为null
安卓富文本(SpannableString)与Textview点击事件冲突解决,仅解决一个spann的冲突形势
可以直接使用selectionStart来进行区分点击事件的动作
//构建富文本对象
var spannable = SpannableString(msg)
spannable.setSpan(object :ClickableSpan(){
override fun onClick(widget: View) {}
override fun updateDrawState(ds: TextPaint) {ds.color = Res.color(R.color.color_159CD6);ds.isUnderlineText = false}
}
,start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
//设置富文本给textview显示
textview.text=spannable
textview.movementMethod= LinkMovementMethod.getInstance()
//textview的点击事件中进行事件的区分处理
textview.apply{/*后面是设置textivew的点击事件*/click{if(selectionStart==-1&&selectionEnd==-1){/*点击了非spanned标记的文字区域*/}else{/*点击了spanned标记的文字queue*/}}}