§2.1 最常用的控制元件------文字框(TextView)

戎碼倥傯發表於2016-10-18

文字框TextView是我們在安卓應用的介面開發中經常用到的一個控制元件,同時,它也是輸入框(EditText)和按鈕(Button)的父類 (輸入框和按鈕後面章節會有介紹)

作用:在頁面上顯示文字。

我們重新來看第一章節的那個“Hello World應用”。 在layout/activity_main.xml佈局檔案程式碼如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.rongma.helloworld.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

我們可以看到,在佈局檔案程式碼中,存在一個TextView節點,這個TextView就是用來在頁面上顯示文字內容的。

其中,android:text屬性用於設定文字內容,此處的屬性值為"Hello World",所以在手機上顯示的內容也就是“Hello World”。 如果把android:text的值改為其他的字串,那麼手機上也會顯示相應的文字內容。

除了android:text之外,還要為大家介紹幾個常用的控制元件屬性:

  • android:background 這個屬性用於設定控制元件的背景,此處可以設定背景圖片,也可以設定背景顏色。

還是以“Hello World”應用程式為例,我們對TextView控制元件設定如下屬性:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" 
    android:background="#00ffff"
    />

執行程式,將會看到如下效果: 2-1-1 即,"Hello World!"文字新增了一個背景顏色。

同樣的,我們也可以將圖片資源匯入到drawable資料夾下(例如,匯入一個bg.png),此時,將android:background值設定為 android:background="@drawable/bg"。則”Hello World“字串的背景將被設定為bg.png圖片

  • android:layout_width 這個屬性用於設定控制元件的寬度
  • android:layout_height 這個屬性用於設定控制元件的高度
    android:layout_height和android:layout_width的屬性值分三種:
    第一種:wrap_content,從字面意義上理解,為包裹內容。即這個控制元件的大小隨著內容的變化而變化。在本案例中,TextView的大小將隨著文字的內容大小而改變。
    第二種:match_parent , 這種屬性值為填充窗體,即這個控制元件的寬(或高),和父窗體的大小保持一致。
    第三種:實際數值,比如200dp
    此處介紹一個新的長度單位:dp,裝置獨立元素,一種基於螢幕密度的抽象單位,隨著螢幕密度的改變,dp與畫素之間的換算會發生改變. 也就是說,當一個控制元件的寬高被設定dp作為長度單位時,這個控制元件的寬高將隨著手機螢幕解析度的變化而自適應

我們對"Hello World"中的TextView控制元件進行設定:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello World!" 
    android:background="#00ffff"
    />

執行程式
2-1-2

我們可以看到,由於我們設定了android:layout_width="match_parent" android:layout_height="wrap_content",所以執行結果中文字框的寬度變為填充整個窗體,高度為包裹內容。

  • android:textSize 用於設定文字的大小
    在這裡要介紹一個新的長度單位 sp,這個單位用於Android應用程式中的文字大小。可以根據使用者的字型大小首選項進行相對應的縮放。

  • android:textColor 用於設定文字顏色

此處,我們將“Hello World”應用程式中的TextView設定文字大小和顏色

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello World!" 
    android:background="#00ffff"
    android:textColor="#ffff00"
    android:textSize="32sp"
/>

執行結果: 2-1-3

我們可以看到,文字的大小和顏色均發生了改變。

  • android:id 用於設定控制元件的id,即唯一標識(類似身份證)

用法:
1 在xml佈局檔案中,設定id值
android:id="@+id/tv_hw"

2 在MainActivity.java檔案中,對這個控制元件進行操作:

public class MainActivity extends Activity {
    private TextView mTvContent;  //1. 定義一個TextView物件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTvContent = (TextView) findViewById(R.id.tv_hw); //2.將這個TextView物件通過findViewById與xml佈局檔案中的id相關聯
        mTvContent.setText("你好,安卓!"); //3.通過呼叫這個方法,我們可以設定TextView要顯示的內容。
    }
}

(1) private TextVIew mTvContent 建立一個變數,是TextView型別的。
(2) mTvContent = (TextView) findViewById(R.id.tv_hw); 將這個TextView物件通過findViewById方法,與xml佈局檔案中id值為tv_hw的控制元件相關聯,並強制型別轉換為TextView型別
(3)此處是通過Java程式碼對TextView進行操作。 mTvContent.setText("你好,安卓!");
執行結果:

2-1-4

經常看到一些書籍大篇幅的介紹Android控制元件的屬性。關於這種現象,我的觀點是:只需要記住幾個常用的屬性。在開發過程中,如果有涉及到其他屬性時,我們可以通過Google等搜尋引擎進行查詢。
同理,對於Java程式碼操作控制元件也是一樣的,我們只需要記住常用的幾個方法。 比如,在上面的案例中,我們使用了setText來設定TextView要顯示的文字。那麼,如果某一天,需求是設定文字顏色時。我們可以在搜尋引擎中進行查詢,最終獲得結果:要呼叫setTextColor方法
死記硬背屬性和方法,是最傻的一種學習方式,我們只需要掌握其中的“套路”即可!

相關文章