Android入門教程 | TextView簡介(寬高、文字、間距)

Android_anzi發表於2021-10-25

TextView簡介

文字,是我們傳達資訊的一種常見方式。在安卓應用上顯示文字,我們通常使用TextView。 之前我們已經知道如何獲取到layout中的TextView,也知道 setText()方法可以修改顯示的文字。

結合我們實際的生活和學習經驗,寫字的時候,有哪些方面是可以由我們來控制的? 文字內容;文字顏色;大小;背景等等。

最簡單的TextView

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

得益於as強大的提示功能,我們在layout中輸入<Te的時候,as可能就彈出了提示。

回車或者滑鼠雙擊TextView即可。

這裡關注兩個基本屬性 layout_widthlayout_height。分別表示TextView的寬度和高度設定。 實際上這兩個屬性是View的屬性。TextView繼承自View。寬高屬性是基礎屬性,是必須設定的。

寬和高屬性

layout_width/layout_height 可以填入wrap_content,match_parent或者具體的數值。

  • wrap_content:表示控制元件寬/高度可由內容來決定。對於TextView,文字越長,它的寬度越寬,直到父view(上層容器)允許的最大寬/高度。
  • match_parent:表示控制元件寬/高度達到父view允許的最大值。通俗說就是把空間撐滿。
  • 我們也可以 輸入具體數值。比如80dp。 dp是安卓中的一種單位,通常用來規定控制元件的寬高,間隔距離等等。類似的,表示文字大小的單位,安卓裡用sp。

顯示文字

顯示文字,可能是 TextView 最主要的用法了。在 layout 中設定文字,使用 text 屬性。

<TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="新手教程" />
    <TextView
        android:id="@+id/sample_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name" />

這裡涉及到一個程式碼風格的問題。上面分別給TextView設定了id。有的人喜歡駝峰風格的,例如sampleTv。

我們可以看到,設定text有多種方式。可以直接把內容寫進去(hard code),也可以使用string資源。 直接寫內容,as會給一個黃色的警告,建議使用者換用@string資源的方式。滑鼠移上去as就可以看到as的警告了。

若要使用@string資源,我們先看另一個xml檔案,即strings.xml。它在res/values裡面。

<string name="app_name">2021</string>
資源命名風格也是小寫字母加下劃線。

res裡面的很多資源,我們可以都可以用R...來找到。

前面我們提到,可以使用 TextView 的 setText 方法來設定文字內容,例如setText("123")。 也可以傳入文字資源的名稱(編號),類似setText(R.string.app_name)。 需要注意的是,R.string.app_name 本身是一個 int 數字,TextView 會根據這個編號去找對應的資源。 如果這樣呼叫 setText(123),大機率會報下面的這個錯誤。

android.content.res.Resources$NotFoundException: String resource ID #0x0
    at android.content.res.Resources.getText(Resources.java:360)

文字設定

一般來說,我們會設定TextView文字的顏色,背景等等。

  • textColor 設定字型顏色
  • textSize 設定字型大小
  • textStyle 設定字型樣式

示例:

textStyle 設定字型樣式
  • normal 沒有特殊效果,預設值
  • italic 斜體
  • bold 粗體

xml 中設定:

示例1:設定斜體

 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Fisher"
        android:textColor="#000000"
        android:textStyle="italic" />

效果:

示例2:設定斜體並且加粗

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="bold|italic"
    android:textColor="#000000"
    android:textStyle="bold|italic" />

效果:

程式碼中設定

使用 TextView 的 setTypeface 方法來設定字型效果。

tv1.setTypeface(null, Typeface.NORMAL); // 普通tv1.setTypeface(null, Typeface.BOLD); // 加粗tv2.setTypeface(null, Typeface.ITALIC); // 斜體tv3.setTypeface(null, Typeface.BOLD_ITALIC); // 加粗和斜體

setTypeface(@Nullable Typeface tf, @Typeface.Style int style)有2個引數。 第一個是字型,這裡可以忽略。 第二個是效果,有正常,加粗,斜體,加粗和斜體這幾種可選。

字型(字型檔)

預設情況下,TextView 的 typeface 屬性支援 sans、serif和monospace 這三種字型。 系統預設 sans 作為文字顯示的字型。但這三種字型只支援英文。如果顯示中文,無論選擇這三種字型中的哪一種,顯示效果都是一樣的。

layout中設定字型
使用  android:typeface 來設定字型。

<!-- sans字型 --><TextView
    android:text="Hello,World"
    android:typeface="sans" /><!-- serifs字型 --><TextView
    android:text="Hello,World"
    android:typeface="serif" /><!-- monospace字型 --><TextView
    android:text="Hello,World"
    android:typeface="monospace" />

程式碼中使用字型

tv.setTypeface(Typeface.SERIF);tv.setTypeface(Typeface.SANS_SERIF);tv.setTypeface(Typeface.MONOSPACE);

引入字型庫
需要引入ttf字型檔案。把字型檔案放在assets/font目錄裡。 程式碼中使用AssetManager來獲取字型。

例如:在Activity中設定字型。

TextView tv1 = findViewById(R.id.tv1);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/otherFont.ttf");
tv1.setTypeface(tf); // 使用字型

間距設定

margin 和  padding 其實是 View 的屬性。這裡我們拿 TextView 來看一下。

以後想顯示一些文字的時候,我們首先會想起的是TextView。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008155/viewspace-2839002/,如需轉載,請註明出處,否則將追究法律責任。

相關文章