1. 程式人生 > >TextView 實現部分文字改變多種顏色併為單段或多段不同顏色的文欄位新增不同點擊事件

TextView 實現部分文字改變多種顏色併為單段或多段不同顏色的文欄位新增不同點擊事件

今天晨諾星空繼續給大家分享乾貨知識,福利來了,哈哈。如果你喜歡可以點個關注哦,男同胞關注了就是好哥們兒,哈哈,兄弟,有啥問題找我探討,保你解決,沒有什麼是一杯酒解決不了的,如果又就兩杯,哈哈,女同胞的話,除了帶給你點程式設計的營養與乾貨,別的估計也只剩以身相許了,哈哈又調皮了

不開玩笑了,下面開始進入正題:
最近專案中遇到了一個新的需求,在谷歌訂閱頁面增加文字顯示介紹以及點選跳轉檢視使用者隱私協議和服務條款的檢視,剛開始以為挺簡單的,沒有太放在心上,但當開始寫佈局檔案時一細看UI標註圖才感覺事情沒有想象的那麼簡單,請看圖:
這裡寫圖片描述
需求說明:
1.顏色方面:Terms of Service 為紅色,Privacy Policy也為紅色,並且中間的連線單詞and要用普通的文字顏色,剩下的文字顏色都為普通文字顏色。
2.點選事件方面:點選紅色字型Terms of Service 和點選紅色字型Privacy Policy要跳轉的頁面不一樣,也就是各自新增不同的點選事件。而點選其餘的字型部分則是什麼都不做的。
思路分析:
原本準備用多個textview控制元件來實現,但一看這個位置和字數根本做不到,因為字數不確定,不同的螢幕適配的時候還會變動,所以只能用一個Textview來實現,但一個Textview能實現嗎?原本以為不可能,但谷歌搜解決方案後竟然驚奇的發現這個谷歌還真是有封裝在sdk裡面。
然後我就一步步嘗試並最終實現了想要的效果。

下面對我操作的步驟進行筆記記錄:
先看下佈局檔案,很簡單,一個原生的Textview就行:

 <TextView
            android:id="@+id/tv_sub_service_policy"
            android:layout_marginTop="@dimen/dp_13"
            android:layout_marginLeft="@dimen/dp_15"
            android:layout_marginRight="@dimen/dp_15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/sp_11"
            android:alpha="0.8"
            android:textColor="#606060"
            android:text="Subscription ... acceptance of TaleMessage’s Terms of Service and Privacy Policy and Subscription Policy."
            />

下面寫下關鍵實現程式碼(注意我這裡貼的是kotlin程式碼):


        //SpannableStringBuilder類支援textview改變部分字型顏色和單獨設定點選事件,需要的引數只有一個,就是需要顯示的文字內容就行,我這裡直接從控制元件獲取文字內容了
        var spanable = SpannableStringBuilder(tv_sub_service_policy.text)
       
        //這個一定要記得設定,不然部分字型時點選不生效
        tv_sub_service_policy.setMovementMethod(LinkMovementMethod.getInstance())

	   //setSpan()方法引數解釋:第一個引數是點選的操作監聽,第二個第三個是點選事件的開始和結束下標,最後一個解釋起來比較麻煩,但這裡又沒有用到,所以如果感興趣可以自己搜尋學習一下
        
        //第一段紅色字型的點選事件
        spanable.setSpan( object :ClickableSpan(){
            override fun onClick(widget: View?) {
                startActivity(Intent(
[email protected]
, UserPolicyActivity().javaClass)) } },tv_sub_service_policy.text.length-60,tv_sub_service_policy.text.length-43 , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) //第二段紅色字型的點選事件 spanable.setSpan( object :ClickableSpan(){ override fun onClick(widget: View?) { startActivity(Intent([email protected], MainActivity().javaClass)) }},tv_sub_service_policy.text.length-39,tv_sub_service_policy.text.length-24 , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) //這裡設定指定欄位的顏色,需要指定顏色和起始位置,以及Spannable引數常量型別 //指定第一段字型顏色 spanable.setSpan( ForegroundColorSpan(resources.getColor(R.color.red_policy)),tv_sub_service_policy.text.length-60,tv_sub_service_policy.text.length-43, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //指定第二段字型顏色 //最後設定給textview控制元件 tv_sub_service_policy.setText(spanable) //想去掉點選後文字背景,設定一下HighlightColor即可 tv_sub_service_policy.setHighlightColor(Color.parseColor("#00ffffff"))

好了,到此就已經實現想要的效果和點選功能了,不得不說對textview這個控制元件又有了新的認知與操作經驗。以上是本人個人的一些總結,如果有總結的不到之處,還望能留言指正,一定感激不盡會!

相關推薦

TextView 實現部分文字改變多種顏色不同顏色新增不同點事件

今天晨諾星空繼續給大家分享乾貨知識,福利來了,哈哈。如果你喜歡可以點個關注哦,男同胞關注了就是好哥們兒,哈哈,兄弟,有啥問題找我探討,保你解決,沒有什麼是一杯酒解決不了的,如果又就兩杯,哈哈,女同胞的話,除了帶給你點程式設計的營養與乾貨,別的估計也只剩以身相許了

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

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

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

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

Android 實現TextView部分文字和網路連結及電話號碼點選監聽

前言 最近在寫專案的時候遇到了一個這樣的需求,要像qq一樣,點選評論的者的名字要跳轉評論者的使用者資訊介面,並且點選評論資訊中的web連結要跳轉到WebActivity,同時如果是其他數字的話要像qq一樣點選並顯示底部Dialog提示是播打電話還是複製號碼。 效

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

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

android TextView 設定部分文字背景色和文字顏色

通過SpannableStringBuilder來實現,它就像html裡邊的元素改變指定文字的文字顏色或背景色 public class MainActivity extends Activity { @Override protected void onCreate(Bund

android 中TextView設定部分文字背景色和文字顏色

通過SpannableStringBuilder來實現,它就像html裡邊的元素改變指定文字的文字顏色或背景色 public class MainActivity extends Activity

android 修改TextView部分文字顏色

今天遇到有個需求,textveiw裡面部分字型顏色需要改變, 借鑑的網址: http://www.jianshu.com/p/a153ef5905ec 第一種 SpannableStringBuilder builder = new SpannableStringBuil

名詞解釋功能:TextView部分文字加下劃線並實現點選事件

效果圖先擺上,其中只有一個關鍵字,但無論幾個都行的,作者已然測試了很多遍。 最近要做一個名詞解釋的功能:在一段文本里有N個關鍵名詞,這些關鍵名詞需要將這段文字與本地資料庫相比較後得到。 1 public Phras

Android利用SpannableStringBuilder設定TextView部分文字顏色...

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_c

Android實現TextView部分文字監聽事件

    通常我們只需要用TextView來顯示文字資訊,展示給使用者看,而把點選相應的監聽事件交給Button等控制元件來處理,當然TextView也可以實現點選事件。有時候我們要對TextView中

Android實現載入富文字以及SpannableString、SpannableStringBuilder實現部分文字可以點選,更換顏色

  最近專案中要實現部分文字變顏色,並且是可點選的。網上找了一下,實現的方式是android端載入富文字,如果你會js的話,那就方便了,表示本人不怎麼會,而且專案框架和介面已經確定了,不可能再改,所以只能試一試其他的方式。 SpannableString、Sp

Android 給TextView部分文字加下劃線 並加入超連結(可點選)

Android 本身自帶的TextView 並沒有直接的方法可以給文字加下劃線和可點選的超連結,使用以下方法即可實現: /** * * @param content 文字內容 * @param textView 載入文字的textview *

android TextView部分文字設定超連結樣式並監聽點選事件

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

TextView設定部分文字可點選及樣式

String str = "這裡可以點";tv.setText(Html.fromHtml("<font color=\"#ffoooo\">紅色</font>text文字")); //設定部分字型樣式,但是不可點選SpannableString spString = new Span

【每日一點】1. Java如何實現匯出Excel表頭表頭

一、背景         在後臺專案中,經常會遇到將呈現的內容匯出到Excel的需求,通過都是匯出單個表頭的Excel檔案,如果存在級聯關係的情況下,也就需要匯出多表頭的場景。今天這篇文章就是分享匯出Excel單表頭或多表頭的實

AS3使用PrintJob實現頁列印

as3實現列印功能: 主要用到PrintJob類中的start()、addPage(mc:sprite,rect,option)、send()三個方法。 單頁列印程式碼 package{ import flash.display.Sprite; import fla

Retrofit 多種提交方式 表提交、檔案上傳

奉上原始碼 - MvpApp,如果發現那裡寫的不對的,請好心人直接指出,我會努力去改正的。 主要包括: 簡單的 get post請求、統一請求頭處理、統一請求體處理、單檔案上傳、多檔案上傳、一個key對用多個檔案、支援String轉換器 不強制使用Gson轉換器、

Hibernate 中間表含有其他 註解方式實現

需求: 兩個實體類:Teacher.class Student.class 中間表包含了一個額外欄位:score Teacher.calss id name 1 Mr.zhang 2 Mr.wang Student.class id name 1 Xiaoming 2 X

安卓TextView改變部分文字顏色的幾種方式

1. 第一種使用SpannableStringBuilder //部分文字改變顏色 //ForegroundColorSpan 為文字前景色,BackgroundColorSpan為文字背景色