1. 程式人生 > >Android 關於TextView中,設定指定部分文字改變顏色,和指定部分文字點選事件

Android 關於TextView中,設定指定部分文字改變顏色,和指定部分文字點選事件

參考文章

我想要實現的是如下這樣的效果

這裡寫圖片描述

  • 首先要想實現文字變色以及點選,都需要使用到SpannableStringBuilder,例項化該類也很簡單,只需將你想要處理的字串當做引數
SpannableStringBuilder spannable = new SpannableStringBuilder(content);
  • 那麼下邊便是開始實現文字變色了,呼叫SpannableStringBuilder的setSpan方法
spannable.setSpan(new ForegroundColorSpan(Color.RED),startIndex,endIndex
,Spannable.SPAN
_EXCLUSIVE_EXCLUSIVE); textView.setText(spannable);
  • 接下來是指定文字的點選事件設定,步驟與設定文字變色基本相同,只需要ClickableSpan這個類來處理點選事件,我們先寫一個類,繼承ClickableSpan
 private class TextClick extends ClickableSpan{
        @Override
        public void onClick(View widget) {
            //在此處理點選事件
        }
    }
  • 接下來又是setSpan這個方法,但第一個引數換成我們繼承ClickableSpan類的例項化,其它三個引數同上,需要注意的是setMovementMethod這個方法一定要記得設定,不然點選是不會生效的
//這個一定要記得設定,不然點選不生效
textView.setMovementMethod(LinkMovementMethod.getInstance());
spannable.setSpan(new TextClick(),startIndex,endIndex
                , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
 這裡會出現我們設定的顏色沒有作用了,這時需要用到ClickableSpan的另一個方法
  • 那麼接下來出現了一個問題,我既要讓文字可點選,但是又要指定它的顏色該怎麼辦呢。我們檢視ClickableSpan的原始碼會發現,它除了onClick之外,還有updateDrawState
  @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(ds.linkColor);
        ds.setUnderlineText(true);
    }
  • 它的實現很簡單,一目瞭然,就是設定文字顏色以及是否有下劃線。那麼這個問題就迎刃而解了,在我們的TextClick重寫updateDrawState,即是
    private class TextClick extends ClickableSpan{

        @Override
        public void onClick(View widget) {
            //在此處理點選事件
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setColor(Color.RED);
        }
    }

相關推薦

Android 關於TextView設定指定部分文字改變顏色指定部分文字事件

參考文章 我想要實現的是如下這樣的效果 首先要想實現文字變色以及點選,都需要使用到SpannableStringBuilder,例項化該類也很簡單,只需將你想要處理的字串當做引數 Span

Android父View子view的事件處理問題探討

在處理二級選單和下拉欄頂部的幾個按鈕衝突的時候參考了一下魅族的手機處理方法:當二級選單顯示的時候除了點選二級選單的地方可以響應外,點選其他區域會先收回二級選單然後才能做其他的操作。為了實現這一方式我的思路是:1、首先判斷當前二級選單是否處於顯示的轉態2、根據二級選單的顯示與否

android子view事件(click)父view長事件(longclick)衝突

工作中想要實現這麼一個效果: 如圖中,當child有一個click事件,parent有一個longclick事件,當長按child的時候能夠觸發parent的longclick。 遇到的問題: 當child設定click事件時,長按child不會觸發p

android 各種 span的生成 如:修改TextView部分文字顏色 生成圖片span

textView = (TextView) findViewById(R.id.textview); SpannableStringBuilder builder = new Spannabl

Android TextView文字通過SpannableString來設定超連結、顏色、字型等屬性

  在Android中,TextView是我們最常用的用來顯示文字的控制元件。   一般情況下,TextView中的文字都是一個樣式。那麼如何對於TextView中各個部分的文字來設定字型,大小,顏色,樣式,以及超級連結等屬性呢?下面我們通過SpannableString的

Android設定TextView部分文字變色及事件

首先要想實現文字變色以及點選,都需要使用到SpannableStringBuilder,例項化該類也很簡單,只需將你想要處理的字串當做引數 SpannableStringBuilder spannable = new SpannableStringBuilder(conte

androidTextView部分文字設定超連結樣式並監聽事件

package com.example.testandroid1; import android.app.Activity; import android.os.Bundle; import android.text.SpannableString; import and

Android設定TextView部分字型顏色事件

  最近接到一個新需求,在一個TextView中實現部分字型的顏色不同於其它字型,且點選該部分文字時實現跳轉的功能。一開始想著用多個TextView連起來實現功能,優化程式碼時再想想,這也太弱智了點兒吧!   果斷Google搜尋一下別的Coder是怎麼實現的,

Android 神器之SpanableString實現textview部分字型事件(不同顏色並且支援多個事件

1.老規矩,咱們先上效果圖: 2.如上圖 標紅的地方,我們一眼看上去 就是一個TextView上面展示出來的(沒錯就是一個TextView展示出來的),並且 部分字型顏色不一樣,而且這個三個協議是可以點選的,點選跳轉到不同頁面,怎麼實現尼 ?,這裡就涉及到一個

Android TextView有圖片有文字混合排列

Android TextView中有圖片有文字混合排列 1.使用html.fromHtml 2.新建ImageGetter 3.使用<img src>標籤   demo: 1.設定文字   ((TextView) findVi

Android 程式碼動態設定字型大小-TextView.SetTextSize()

關鍵程式碼  - setTextSize(TypedValue.COMPLEX_UNIT_PX,15); //22畫素  - setTextSize(TypedValue.COMPLEX_UNIT_SP,15); //22SP  - setTextSize(Type

android textview 的\n直接顯示不換行

今天在給TextView setText的時候出現了個問題,大概內容是這樣的我想讓他換行,但是他給我原封不動的顯示成\n了。 要是在程式碼中這樣寫也沒有問題: System.out.println("nihao\nnihao"); 經過最後的嘗試,這樣解決了我也不知道為什

關於android TextView在不需要較焦點的情況下自動滾動文字實現小技巧

一般情況下,預設情況下,TextView文字設定singleLine、設定 ellipsize屬性為marquee之後,當文字長度超過TextView控制元件的寬度且獲取焦點之後,就會自動滾動文字。那麼,我們現在有一個需求,就是這個文字我需要在TextView沒有獲取焦點,

Android TextView 文字橫向滾動效果實現

字面意思可能不太好理解,那就來個動圖吧 如果想了解更多請到 GitHub 搜尋 跑馬燈 使用系統的 TextView 實現 自定義一個TextView 貌似也可以不用

androidTextView如何設定水平滾動效果

       筆者在學習android的過程中曾遇到過一個比較頭疼的問題——如何讓文字實現走馬燈的效果,在起初我和大家一樣想在網上找到一點資料,可是當我在茫茫網際中搜尋了幾個小時之後發現的結果卻是非常惱火的,提問的一大堆卻沒有回答的,於是我開始自己的專研道路,筆者是一個android的菜鳥級人物,而且是非常菜

android:TextView單行顯示設定字元長度超過後面為省略號

在 TextView 中加入:     (注意:layout_width="wrap_content",寬度必須是wrap_content,為match_parent無效)     android:maxEms="10"   //限制位元組長度為10     andro

Android TextView新增連結並在連結部分字型變色可

這麼一個效果:一行文本當中 前面顯示黑色顏色的“超文字:”,後面顯示紅色顏色的“http://www.baidu.com” 並且要求紅色字型的部分可以點選,有響應的點選事件進行處理,你該如何實現? 最簡單的實現方法,兩個TextView ,第一個顯示黑色字型的“超

android TextView圖片文字的灰顯

在某種情況下,menu的某一子項(圖示和文字)要求不能點選並且灰顯。 1. menu子項 menu_item.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http:

android TextView 首行縮排與部分文字改變顏色大小效果

TextView 首行偽縮排效果 // 原理, 使用Spannable 把前兩個字設定為透明狀態. 雖然是偽縮排, 但是不會因為解析度的不同而產生各種問題, 注意如果 // TextView設定

Android程式碼動態設定圖片的大小(自動縮放)位置

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andr