這些控件都有一些共有屬性,讓我們來看看吧:
共有屬性 | 說明 |
---|---|
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 中的文字默認是居左上角對齊,我們可以通過 android:gravity 來修改 TextView 的文字對齊方式:
android:gravity="center"
還可以對 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 與 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;
}
}
});
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 中的圖片:
//動態改變圖片
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" />
可以使用 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() 方法
將對話框顯示出來。
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();
}
});