1. 程式人生 > >同一個 TextView 設定多個樣式多個點選事件

同一個 TextView 設定多個樣式多個點選事件

先看樣式圖片( 評論內容為一個 TextView ):

xml 檔案中不給出程式碼了,就是一個容器裡面有一個 TextView ;

下面是 Activity 程式碼:

        String oneName = "直男";//第一個人
        String twoName = "汙女";//第二個人
        String commentContext = "你在幹嘛";//第一個人回覆第二個人的內容
        int oneNameSize = oneName.length();
        int twoNameSize = twoName.length();
    SpannableString spannableInfo = new SpannableString(oneName + "回覆" + twoName + ":" + commentContext);
        //第一個人(直男)的樣式,點選事件


        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FFFFAA00"));//設定顏色
                ds.setUnderlineText(false);//去掉下劃線
            }
            @Override
            public void onClick(View view) {
                //設定直男的點選事件
                Log.e("=====","直男");
            }
        }, 0, oneNameSize, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //"回覆"兩個字的樣式

        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FF151515"));//設定顏色
                ds.setUnderlineText(false);//去掉下劃線
            }
            @Override
            public void onClick(View widget) {
            }
        }, oneNameSize , twoNameSize + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //第2個人(汙女)的樣式,點選事件

        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FFFFAA00"));//設定顏色
                ds.setUnderlineText(false);//去掉下劃線
            }
            @Override
            public void onClick(View view) {
                //設定汙女的點選事件
                Log.e("=====","汙女");
            }
        }, twoNameSize + 2, oneNameSize + twoNameSize + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //內容的點選事件和樣式
        spannableInfo.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FF151515"));//設定顏色
                ds.setUnderlineText(false);//去掉下劃線
            }
            @Override
            public void onClick(View view) {
                //設定內容的點選事件
                Log.e("=====","內容");
            }
        }, oneNameSize + twoNameSize + 2, spannableInfo.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        textview.setHighlightColor(Color.TRANSPARENT); //設定點選後的顏色為透明,否則會一直出現高亮
        textview.append(spannableInfo);
        textview.setMovementMethod(LinkMovementMethod.getInstance());//開始響應點選事件

更多好內容戳下面: