Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 詳解第二組UI組件:TextView及其子類

詳解第二組UI組件:TextView及其子類

編輯:關於Android編程

以下是TextView及其子類的層次結構:
這裡寫圖片描述

TextView基本用法

TextView直接繼承了View,它還是EditText和Button兩個UI組件的子類。從功能上來看,TextView實質上就是一個可以編輯內容的文本框,只是Android關閉了它的文字編輯功能。(可以通過其子類EditView來進行文字編輯)。
關於TextView的詳細特性可以參照其官方API。
以下通過一個具體的實例來說明介紹TextView以及CheckedTextView的用法:

不同顏色、字體、帶鏈接的文本

首先設置字號為20pt,在文本框的結尾處繪制圖片:

接下來設置中間省略,並且所有字母都大寫:

注意:
android:singleLine=”true” 表示的是設置該文本框為單行模式,其不會進行換行;
android:ellipsize=”none/middle/start/end/marquee” 表示的是當顯示的文本超過了TextView的長度時處理文本內容的方式。none表示的是不對其進行任何處理,middle表示在文本中間處階段並顯示省略號,marquee表示使用marquee滾動動畫顯示文本;
android:textAllCaps=”true” 表示文本內容大寫。

接著我們對郵件、電話增加鏈接:

注意:
1. 我們一般將text文本中的信息統一存儲在string.xml中;
2. autoLink可以為郵件、電話等信息設置鏈接。

接下來設置文字的顏色、大小,並使用陰影:

    

注意:
1. android:shadowRadius 表示的是設置陰影的模糊程度,其值越大表示越模糊;
2. android:shadowX/Y 表示的是設置文本框中的陰影在X/Y方向的偏移量;
3. android:shadowColor 表示的是陰影的顏色,#00f表示的是灰色

然後是測試密碼框:

注意:
密碼框將會將輸入的值不進行顯示

再則設置勾選文本:

注意:
checkMark表示的是勾選文本框的勾選圖標

在默認情況下,TextView是不帶邊框的,如果想為TextView添加邊框,只能通過曲線救國的方式,也就是為其添加背景:

圓角邊框、漸變背景的TextView


    
    

注意:
我們可以使用background對文本框的背景進行設置

//bg_border.xml


    
    
    
    
//bg_border2.xml


    android:shape="rectangle"
    
    
    
    
    
    

EditView 的功能與用法

前面介紹過了,EditView與TextView相似,最大的不同在於EditText可以進行文本框的編輯。
以下通過一個實例來介紹EditView的用法。

用戶友好的輸入界面




    
        
        
    

    
        
        
    

    
        
        
    

    
        
        
    

    
        
        
    
    

單選鈕(RadioButton) 和復選框(CheckBox)的功能與用法

單選鈕(RadioButton)、復選框(Checkbox)和狀態開關按鈕(ToggleButton)和開關(Switch)是用戶界面中常用的UI,它們都繼承了Button類,因此都可直接使用Button支持的各種屬性和方法。
RadioButton、CheckBox與普通按鈕的不同是他們多了一個可選中的功能,因此可以額外指定一個android:checked屬性,用於指定RadioButton、CheckBox初始時是否被選中。
RadioButton和CheckBox不同在於,一組RadioButton只能選中其中一個,因此RadioButton通常要與RadioGroup一起使用,用於定義一組單選鈕。
下面通過實例來介紹RadioButton和CheckBox的用法:

利用單選鈕、復選框獲取用戶信息

首先是RadioButton的使用:


        
        
        
            
            
            
        
    

接下來在定義一個復選框:
復選框的結構層次為最外層是一個TableRow,然後是一個LinearLayout布局(顯示復選框的垂直效果並設置第一項被選中),最後是復選框的實際按鈕。


        
        
        
            
            
            
            
        

單選鈕、復選框的定義基本完成,下面我們為單選鈕設置事件響應機制:
接著再頁面布局中添加以下TextView:

此部分將會展現單選鈕所選中的內容。

然後是MainActivity.java文件的部分:

public class MainActivity extends AppCompatActivity {
    //表明rg是RadioGroup型的,但是為何一定要在此處聲明,而不能在獲取組件時再進行聲明?
    RadioGroup rg;
    TextView show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //獲取界面上的rg、show兩個組件
        rg = (RadioGroup) findViewById(R.id.rg);
        show = (TextView) findViewById(R.id.show);

        //為RadioGroup組件的OnCheckedChanged事件綁定事件監聽器
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                //根據用戶勾選的單選鈕來動態改變tip字符串的值
                String tip = checkedId == R.id.male? "您的性別為男" : "您的性別為女";
                //修改show組件中的文本
                show.setText(tip);
            }
        });
    }
}

狀態開關按鈕(ToggleButton)和開關(Switch)的功能和用法

ToggleButton、Switch與CheckBox復選框非常相似,都可以提供兩種狀態,不過前者通常用於切換程序中的某種狀態。
前者支持的屬性參見Android官方文檔,下面通過具體的實例使用其相關屬性:

動態控制布局

首先是狀態開關按鈕以及開關的定義:


    
    
    

注意:
TextOff表示的是該開關的狀態關閉時顯示的文本,同理,TextOn表示的是該開關打開時顯示的文本;
android:thumb是指定使用drawable自定義繪制該開關的開關按鈕(也就是按鈕顯示的圖片)

然後我們定義一個可以動態改變方向的線性布局:

接下來我們為相關的按鈕添加事件響應:
首先是得到兩個開關按鈕以及可動態改變方向的線性布局

ToggleButton toggle;
Switch switcher;
...OnCreate
toggle = (ToggleButton) findViewById(R.id.toggle);
switcher = (Switch) findViewById(R.id.switcher);
final LinearLayout test = (LinearLayout)findViewById(R.id.test);

然後添加事件的響應:

CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if (isChecked) {
                    //設置LinearLayout垂直布局
                    test.setOrientation(LinearLayout.VERTICAL);
                    toggle.setChecked(true);
                    switcher.setChecked(true);
                }
                else {
                    //設置LinearLayout水平布局
                    test.setOrientation(LinearLayout.HORIZONTAL);
                    toggle.setChecked(false);
                    switcher.setChecked(false);
                }
            }
        };
        toggle.setOnCheckedChangeListener(listener);
        switcher.setOnCheckedChangeListener(listener);

時鐘(AnalogClock和TextClock)的功能與用法

時鐘UI組件是兩個非常簡單而又實用的組件,TextClock由於繼承自TextView,因此本身就是一個文本框,只是它裡面顯示的內容總是當前時間。
AnalogClock繼承了View組件,它重寫了View的OnDraw方法,它會在View上繪制模擬時鐘。
TextClock和AnalogClock都會顯示時鐘,不同的是前者只能顯示數字,且可以精確到秒,而後者只能精確到分。

下面通過一個實例來具體地了解相關屬性使用:

手機裡的“勞力士”


    
    
    
    
    
    

計時器(Chronometer)

計時器的用法相對而言最為簡單,因此在此處直接使用實例:

然後是Java程序代碼:

public class MainActivity extends AppCompatActivity {
    Chronometer ch;
    Button start;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //獲取計時器組件
        ch = (Chronometer) findViewById(R.id.test);
        //獲取開始按鈕
        start = (Button) findViewById(R.id.start);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //設置開始計時的時間
                ch.setBase(SystemClock.elapsedRealtime());
                //啟動計時器
                start.setEnabled(false);
            }
        });
        //為Chronometer綁定事件監聽器
        ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                //如果從開始計時到現在超過了20s,則停止
                if (SystemClock.elapsedRealtime() - ch.getBase() > 20 * 1000) {
                    ch.stop();
                    start.setEnabled(true);
                }
            }
        });
    }
}

第二組組件TextView及其子類是極為重要的一組UI組件,值得在聯系中進行深入理解與掌握。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved