從零開始學Android之TextView

2021-08-26 10:09:50 字數 3805 閱讀 5638

1:顯示富文字(url、不同大小、字型、顏色的文字)

在textview類中預定義了一些類似html的標籤,通過這些標籤,可以使textview控制項顯示不同的顏色、大小、字型的文字。

:設定顏色 :設定大號字 :設定小號字

:斜體:粗體 :等寬字型(monospace)

:換行(行與行之間沒有空行) :換行(行與行之間的空行)

這些標籤雖然和html的標籤類似,但並不具備html標籤的全部功能。如標籤只支援color和face兩個屬性。

在使用這些標籤時不能將帶這些標籤的字串直接賦值到textview上,而需要使用html.frmhtml方法將帶標籤的字串轉換成charsequence物件,再賦值給textview。

如果想在顯示的文字中將url、e-mail、**等特殊內容高亮顯示,並在單擊時觸發相應的動作(如單擊**會直接在撥號介面顯示**號碼),

可以設定標籤的android:autolink屬性,該屬性可設定的屬性值如下:

下面是示例

public class main extends activity }

2:顯示表情影象和文字

這樣的效果類似我們在網路上聊天時發出的表情和文字,我們新增乙個

public class main extends activity }, null); txtsecond.settext(charsequence); txtsecond.setmovementmethod(linkmovementmethod.getinstance()); } /** * 由於無法直接使用檔名來引用res/drawable中的影象資源, 我們利用反射技術 從r.drawable類中通過影象資源檔名, * 去獲得相應的影象資源id,實現**如下: */ public static int getresourceid(string name) catch (exception e) return id; } }

3:單擊鏈結彈出activity

上面我們已經學會了使用讓textview自動識別的特殊文字,但要是我們想在單擊textview時執行我們自定義的動作要怎麼辦呢?

public class main extends activity /**解釋一下這個setspan方法,第乙個引數需要設定乙個clickablespan物件, * 第二個和第三個引數分別表示文字中要設定成span的某段文字的起始位置和終止位置的下乙個字元的位置 * 最後乙個引數是乙個標誌,分別是: * spannable.span_exclusive_inclusive 在span前的字元不應用span的效果,後面的字元應用 * spannable.span_exclusive_exclusive 在span前的字元應用span的效果,後面的不應用 * spannable.span_inclusive_inclusive 在span前後的字元都應用span的效果 */ }, 0, text.length(), spannable.span_exclusive_exclusive); txtsecond.settext(spannablestring); txtsecond.setmovementmethod(linkmovementmethod.getinstance()); } }

4:為指定文字新增背景

有乙個很常用的span類叫backgroundcolorspan,該類的功能是設定指定字串的背景色:

第1步:將字串轉換成spannablestring物件

第2步:確定要設定的子字串的start和end

第3步:建立backgroundcolorspan物件

backgroundcolorspan bgcolorspan=new backgroundcolorspan(color.red);

第4步:使用setspan方法將指定子字串轉換成backgroundcolorspan物件

spannablestring.setspan(bgcolorspan,start,end,spannable.span_exclusive_exclusive);

第5步:用spannablestring物件設定textview控制項

textview.settext(spannablestring);

textview.setmovementmethod(linkmovementmethod.getinstance());

5:帶邊框的textview

android sdk本身提供的textview控制項並不支援邊框,所以要想實現這一效果的話我們可以自定義乙個控制項繼承textview並修改它,

當然也可以設定textview控制項的背景圖,這個不作演示。

首先定義乙個bordertextview類, extends textview 。

public class bordertextview extends textview @override protected void ondraw(canvas canvas) } 然後在xml布局檔案中加入這個控制項,這裡控制項的型別要寫上全名(packagename+classname):

效果如下:

6:設定行間距

如果在textview控制項中顯示了多行文字,會有乙個預設的行間距。如果要更改這個預設的行間距的話,我們可以使用下面幾種方式:

android:linespacingextra屬性設定精確的行間距。

android:linespacingmultiplier屬性設定預設行間距的倍數。

使用style資源設定行間距。我們需要先在res\values目錄中的檔案裡定義乙個style:

下面是示例。

<?xml version="1.0" encoding="utf-8"?>

此外還可以在**中設定:textview.setlinespacing(50,1.2f);第乙個引數是精確值,後乙個是倍數。

以上幾種方式,如果同時設定了精銳值和倍數的話,系統會以最大的乙個作為行間距的距離。

7:在未顯示完的文字後面加上省略號

當文字內容太多時,textview控制項一屏無法完整顯示,這樣有時候我們就需要在內容中加上省略號。

在textview標籤中加上android:singleline="true",這樣內容只會顯示一行,然後再加上android:ellipsize="end",

這樣在該行的末尾就會加上省略號了,android:ellipsize這個屬性值還可以是start,middle,有興趣的朋友可以自己試試。

我們還可以在**中進行設定:textview.setellipsize(textutils.truncateat.end);後面跟的是乙個列舉型別。

8:走馬燈效果

對於長文字的顯示,除了用省略號之外我們還可以讓它滾動顯示,這樣的效果也叫走馬燈效果。

我們實現這個效果,也要用到上面android:ellipsize的屬性,還有android:marqueerepeatlimit,和android:focusable屬性。

如果有的朋友實現這個走馬燈效果時發現它跑不起來,記得把android:focusableintouchmode事件也寫上就行了。

9:垂直滾動

像我們看**時,會有很多內容要往下瀏覽,這時我們就要用到垂直滾動。

與垂直滾動直接相關的有下面幾個屬性:

android:scrollbars="vertical"

該屬性值必須設定為vertical

android:scrollbarstyle="outsideoverlay" 表示滾動條的位置

android:scrollba***deduration="2000" 表示滾動條從出現到消失的時間,單位是毫秒。

如果你設定了這幾個屬性還是沒有出現垂直滾動條的話,請看看你的內容android:text,只有比較長的文字才可以滾動。

好了textview就學習到這裡,明天繼續學習edittext。

從零開始學android

相對布局管理器指的是參考某一其他控制項進行擺放,可以通過控制,將元件擺放在乙個指定參考元件的上 下 左 右等位置,這些可以直接通過各個元件提供的屬性完成。下面介紹一下各個方法的基本使用 no.屬性名稱 對應的規則常量 描述1 android layout below relativelayout.b...

從零開始學Android(一)

如果是國內環境,需要配置相關的國內映象和倉庫。有條件的話還是選擇vpn的方式進行更新,國內的倉庫和映象有些檔案缺失,導致相關的依賴檔案缺乏,從而導致工程編譯無法通過。gradle倉庫一般使用阿里雲的的倉庫進行代替,但是阿里雲的倉庫缺失一些檔案,所以一些工程可能無法進行編譯。具體的配置方法如下 首先,...

從零開始學jQuery Validate 之01

jquery validate 外掛程式為表單提供了強大的驗證功能,讓客戶端表單驗證變得更簡單,同時提供了大量的定製選項,滿足應用程式各種需求。該外掛程式 了一套有用的驗證方法,包括 url 和電子郵件驗證,同時提供了乙個用來編寫使用者自定義方法的 api。所有的 方法預設使用英語作為錯誤資訊,且已...