1. 程式人生 > >textview設定多種不同的字型顏色和點選事件

textview設定多種不同的字型顏色和點選事件

最近專案需要用到textview為特定字元設定不同的顏色,如果用不同的控制元件拼起來的話一行也許沒有問題,但是如果換行的話效果就不理想了就像qq空間回覆品論的效果,暱稱和內容文字顏色不一樣,點選事件也不一樣。 目前我找到兩張方法,效果一樣。想用哪種看個人喜好

1,使用html格式

String html = "看這裡,測試<u>下劃線</u><i>斜體字</i><font color='red'>紅色字</font>的格式";        
tv.setText(Html.fromHtml(html));

這裡寫圖片描述
怎樣讓TextView也顯示Html中節點的影象呢?
可以看到fromHtml還有另一個重構:
fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
實現一下ImageGetter就可以讓圖片顯示了

ImageGetter imgGetter = new Html.ImageGetter() { 
@Override 
public Drawable getDrawable(String source) { 
Drawable drawable = null; 
drawable = Drawable.createFromPath(source); // Or fetch it from the URL 
// Important drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable .getIntrinsicHeight()); return drawable; } }; tv.setText(Html.fromHtml(html, imgGetter, null));

2.使用SpannableString

  tv.setText(getSpan());  
     tv.setHighlightColor(Color.TRANSPARENT);//去掉點選效果
     tv.setMovementMethod(LinkMovementMethod.getInstance());//這句話必須有,
private SpannableString getSpan(){ final View.OnClickListener l=new OnClickListener() { @Override public void onClick(View v) { Intent intent =new Intent(MainActivity.this,WebViewActivity.class); intent.putExtra("url", "http://www.caiyanlicai.com/app/H5/privacy.html"); startActivity(intent); overridePendingTransition(R.drawable.push_left_in,R.drawable.push_left_out); } }; final View.OnClickListener l2=new OnClickListener() { @Override public void onClick(View v) { Intent intent =new Intent(MainActivity.this,WebViewActivity.class); intent.putExtra("url", "http://www.caiyanlicai.com/app/H5/agreement.html"); startActivity(intent); overridePendingTransition(R.drawable.push_left_in,R.drawable.push_left_out); } }; String one="瞬間爆炸"; String two="完成單殺"; String and=" 和 "; SpannableString spnableInfo=new SpannableString(one+and+two); int start=one.length()+and.length(); int end=one.length()+two.length()+and.length(); int start2=0; int end2=one.length(); spnableInfo.setSpan(new ClickableSpan() { @Override public void updateDrawState(TextPaint ds) { // TODO Auto-generated method stub super.updateDrawState(ds); ds.setUnderlineText(false);//去掉下劃線 } @Override public void onClick(View widget) { // TODO Auto-generated method stub l.onClick(widget); } }, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spnableInfo.setSpan(new ForegroundColorSpan(Color.parseColor("#007aff")), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spnableInfo.setSpan(new ClickableSpan() { @Override public void updateDrawState(TextPaint ds) { // TODO Auto-generated method stub super.updateDrawState(ds); ds.setUnderlineText(false); } @Override public void onClick(View widget) { // TODO Auto-generated method stub l2.onClick(widget); } }, start2, end2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spnableInfo.setSpan(new ForegroundColorSpan(Color.parseColor("#007aff")), start2, end2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return spnableInfo; }

相關推薦

textview設定多種不同字型顏色事件

最近專案需要用到textview為特定字元設定不同的顏色,如果用不同的控制元件拼起來的話一行也許沒有問題,但是如果換行的話效果就不理想了就像qq空間回覆品論的效果,暱稱和內容文字顏色不一樣,點選事件也不一樣。 目前我找到兩張方法,效果一樣。想用哪種看個人喜好

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

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

關於android自定義字型顏色改變字型顏色

先看效果圖 上面的為點選按下的效果圖 上面的為預設的(鬆開按鈕)的效果圖 首先我們先在values資料夾下新建一個color.xml檔案 這檔案就是配置我們要使用的顏色 程式碼如下 <?xml version="1.0" encoding

Android 中SpannableStringBuilder控制區域性文字顏色事件

直接上程式碼 package com.lhl.qsmm.maskguidetest; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.s

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

先看樣式圖片( 評論內容為一個 TextView ): xml 檔案中不給出程式碼了,就是一個容器裡面有一個 TextView ; 下面是 Activity 程式碼:         String oneName = "直男";//第一個人         Stri

Android 一個TextView設定文字不同字型大小顏色的最完整方法

在做專案的時候,經常會遇到過一行文字有兩種顏色。有時候直接會想到用多個TextView來實現。今天就介紹一下更為簡單的方法,用一個TextView實現。 效果: 這幾個都實現了一行字有不同顏色,還有兩個字型大小也不一樣,我們下邊一一介紹。 首先xml程

舉例說明ArrayAdapter的使用如何設定ListView中每個Item的事件

首先要先定義一個ListView物件,並進行例項化private ListView mListView; mListView=(ListView)findViewById(R.id.ListView);定義類MyAdapter繼承ArrayAdapterpublic cla

設定TextView部分文字下劃線並響應事件(SpannableString)

實現效果 textview中改變《服務條款》的顏色、增加下劃線。 實現關鍵點: SpannableString的使用 SpannableString spanText=new SpannableString(getString(R.string.d

給元素設定了固定座標後,事件失效

<body> <div class="foot"> <div class="price">價格</div> <div class="go-time choosed">出發 <span>早</spa

ButterKnife (奶油刀) 找控制元件id事件的註解 簡單使用

首先 在app裡的build 最上面--------------------- apply plugin: ‘com.jakewharton.butterknife’ ----------------在app裡的build 加入依賴---------------------------

安卓實現任意控制元件view可拖拽,並監聽拖拽事件,可自動拉回螢幕邊緣

因為專案中有需要實現控制元件可任意拖拽的需求,所以簡單寫了個自定義OnTouchListener,以作拋磚引玉,歡迎大家提議反饋。 完整實現類如下,程式碼中有詳細註釋: 使用者可以決定是否開啟自動拖拽邊緣功能,可以監聽控制元件的拖拽和點選事件 public cl

textview 中處理spannable使得ListView的事件失效的解決方法

import android.content.Context; import android.text.Html; import android.text.Layout; import android.text.Selection; import android.tex

vue中的長按事件事件衝突

ps:我是個新手,最近一直在做移動端的專案,先說下需求,點選圖片預覽,長按刪除,之前在圖片上幫定了點選事件和長按事件,但是會有衝突,由於智商不夠,百度半天才解決的,最後直接把點選事件給去了,直接用定時器械的,記錄下,下次直接用就好了   1,觸屏事件 touchstart: //手指放到

android ViewPager實現App主介面Tab選單頁面切換事件

Tabhost實現頁面滑動切換比較麻煩,這裡介紹一下viewPage 控制元件。 實現了三屏滑動帶標題點選和tab頁面內按鈕的的點選事件實現; viewPage  的優點是可以滑動切換缺點是MainA

android Fragment實現APP主介面Tab頁面切換事件

Fragment 頁面切換不能滑動 所以對於listview 可以新增的左右滑動事件 ,不會有衝突例如(QQ的好友列表的刪除) Fragment 和viewpager 的區別 Viewpager 的事件都需要寫在 MainActivity 使

Android用GridView畫帶背景色事件的簡單表格

一:效果圖 六步即可完成GridView不同背景色,並且每個單元格可點選 GridView佈局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="h

Android富文字實現不同的文字新增事件

如果可以點選的文字位置是固定不變的,可以在String.xml中配置(如:“可以點選的”給“點選”設定點選事件)。 @Override protected void onCreate(Bundle s

Android 部分文字顏色大小事件的處理

Android開發中,經常會有這樣一個需求,在一段文字中,為突出顯示其中幾個文字,會採用不同的顏色,大小來顯示,並且有可能需要點選處理。先將自己平常用到的幾種方法總結如下。 1. 直接利用佈局實現 2. 利用富文字標籤實現 3. webview

RecyclerView 多條目載入 事件

compile 'com.android.support:recyclerview-v7:25.1.0' //////////////////////////////////////////////////////////////如果巢狀 ScrollowView 需要加上

android之View座標系(view獲取自身座標的方法事件中座標的獲取)

在做一個view背景特效的時候被座標的各個獲取方法搞暈了,幾篇抄來抄去的部落格也沒弄很清楚。 現在把整個總結一下。 其實只要把下面這張圖看明白就沒問題了。 涉及到的方法一共有下面幾個: view獲取自身座標:getLeft(),getTop(),getRigh