說說 Android 的常見 UI 控件

這些控件都有一些共有屬性,讓我們來看看吧:

共有屬性 說明
android:id 唯一標識符
android:layout_width 寬度
android:layout_height 高度
android:visibility visible:可見;invisible:不可見,但仍然占據原來的屏幕空間;gone:不可見,也不會占據屏幕空間。

1 TextView(文本)

TextView 用于在界面上顯示一段文本信息。

屬性 說明
android:text 內容
android:gravity 指定文字的對齊方式,可選值有 top、bottom、left、right、center 等,可以用豎線來同時指定多個值。center 效果等同于 "center_vertical 加 center_horizontal"。
android:textSize 指定文字的大小。
android:textColor 指定文字的顏色。

android:layout_width 和 android:layout_heigh 是所有控件都會有的屬性。

布局文件:

<TextView
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="這是一段文本" />

layout_width 與 layout_height 有三種可選值:match_parent(推薦) 和 fill_parent的意義相同,表示讓當前控件的大小和父布局的大小一樣;wrap_content 表示讓當前控件的大小能夠剛好包含住里面的內容,也就是控件的內容決定了當前控件的大小。

TextView 示例

TextView 中的文字默認是居左上角對齊,我們可以通過 android:gravity 來修改 TextView 的文字對齊方式:

android:gravity="center"
TextView 居中對齊

還可以對 TextView 中文字的大小和顏色進行修改:

android:textSize="24sp"
android:textColor="#ff0000"

這里文字的大小使用 sp 為單位,即 scaled pixels(放大像素)。

設置文字的大小和顏色

2 Button (按鈕)

Button 用于和用戶進行交互。

屬性 說明
android:text 按鈕上的文本
android:textAllCaps 所有英文字母是否進行大寫轉換,默認為 true

布局文件:

<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="按鈕" />

可以在活動類中為 Button 的點擊事件注冊一個監聽器:

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

    //為按鈕的單擊事件注冊監聽器
    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "點擊了按鈕", Toast.LENGTH_SHORT).show();
        }
    });
}

3 EditText (文本輸入)

EditText 允許用戶在控件里輸入和編輯內容,并可以在程序中對這些內容進行處理。

屬性 說明
android:id 唯一標識符
android:layout_width 寬度
android:layout_height 高度
android:hint 提示性的文字,一旦用戶輸入了內容,這些文字就會消失。
android:maxLines 指定最大行數。

布局文件:

<EditText
    android:id="@+id/edit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="請輸入"
    android:maxLines="2"
    />
提示性文字效果
EditText 效果
限制最大行數

可以結合使用 EditText 與 Button,實現通過點擊按鈕來獲取 EditText 中輸入的內容:

final EditText editText = (EditText) findViewById(R.id.edit_text);//獲取 EditText 對象

//為按鈕的單擊事件注冊監聽器
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
//                Toast.makeText(MainActivity.this, "點擊了按鈕", Toast.LENGTH_SHORT).show();

        switch (v.getId()) {
            case R.id.button:
                String inputText = editText.getText().toString();
                Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
});
結合使用 EditText 與 Button

4 ImageView (圖片)

ImageView 用于在界面上展示圖片。

屬性 說明
android:src 圖片路徑
<ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/hedgehog"
        />

因為圖片的寬和高都是未知的,所以將 ImageView 的寬和高都設定為 wrap_content,這樣就可以保證不管圖片的尺寸是多少都可以完整地展示出來。

ImageView 示例

也可以在程序中通過代碼動態地更改 ImageView 中的圖片:

//動態改變圖片
findViewById(R.id.change_image).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        ((ImageView) findViewById(R.id.image)).setImageResource(R.drawable.town);
    }
});
動態改變圖片

5 ProgressBar (進度條)

ProgressBar 會顯示一個進度條,一般用于表示程序正在加載數據。

屬性 說明
style 樣式
android:max 設置最大值。
<ProgressBar
    android:id="@+id/process"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
ProgressBar 示例

可以使用 setVisibility() 方法來設置 ProgressBar 的可見性:

//控制進度條
final ProgressBar progressBar = ((ProgressBar) findViewById(R.id.process));
findViewById(R.id.control_process_bar).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (progressBar.getVisibility() == View.GONE) {
            progressBar.setVisibility(View.VISIBLE);
        } else {
            progressBar.setVisibility(View.GONE);
        }
    }
});

這時點擊按鈕,會看到進度條在顯示與隱藏之間來回切換。

還可以給 ProgressBar 指定不同的樣式,默認是圓形進度條,我們通過 style 屬性把它指定為水平進度條:

<ProgressBar
    android:id="@+id/process"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="?android:attr/progressBarStyleHorizontal"
    android:max="100"
    />

這里通過 android:max 屬性給進度條設置一個最大值,現在我們實現點擊按鈕,動態地更改進度條的進度:

//控制水平進度條
findViewById(R.id.control_horizontal_process_bar).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int process = progressBar.getProgress();
        process = process + 10;
        progressBar.setProgress(process);
    }
});
水平進度條示例

6 AlertDialog (警告對話框)

AlertDialog 會在當前的界面中彈出一個對話框,這個對話框會置頂于所有界面元素之上,所以具有屏蔽其他控件的能力。AlertDialog 一般用于提示一些非常重要的
內容或者警告,比如為了防止用戶誤刪處重要內容,在刪除前彈出一個警告確認框。

//彈出警告
findViewById(R.id.alert).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
        dialog.setTitle("警告");
        dialog.setMessage("停水啦,是否儲水?");
        dialog.setCancelable(false);
        dialog.setPositiveButton("確認", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        dialog.show();
    }
});

首先通過 AlertDialog.Builder 創建出一個 AlertDialog 的實例,然后可以為這個對話框設
置標題、內容、可否取消等屬性,接下來調用 setPositiveButton() 方法為對話框設置確定按鈕
的點擊事件,調用 setNegativeButton() 方法設置取消按鈕的點擊事件,最后調用 show() 方法
將對話框顯示出來。

AlertDialog 示例

7 ProgressDialog (進度條對話框)

ProgressDialog 與 AlertDialog 有點類似。都可以在界面上彈出一個對話框,都具有屏蔽
其他控件能力。不同的是,ProgressDialog 會在對話框中顯示一個進度條,用于表示當前操作比較耗時,讓用戶耐心地等待。

//彈出進度條
findViewById(R.id.alert_progress_dialog).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
        progressDialog.setTitle("進度條對話框");
        progressDialog.setMessage("處理中,請稍候……");
        progressDialog.setCancelable(true);
        progressDialog.show();
    }
});
ProgressDialog 示例
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容