Android 對話框 AlertDialog
本講介紹一下Android基本組件:對話框AlertDialog。
API:
java.lang.Object | |
? | android.app.AlertDialog.Builder |
使用AlertDialog.Builder創建對話框需要了解以下幾個方法:
- setTitle :為對話框設置標題
- setIcon :為對話框設置圖標
- setMessage:為對話框設置內容
- setView : 給對話框設置自定義樣式
- setItems :設置對話框要顯示的一個list,一般用于顯示幾個命令時。
- setMultiChoiceItems :用來設置對話框顯示一系列的復選框。
- setNeutralButton :
- setPositiveButton :給對話框添加"Yes"按鈕
- setNegativeButton :對話框添加"No"按鈕
- create : 創建對話框
- show :顯示對話框
下面我們來看一下最簡單對話框。
這個對話框只是簡單的顯示內容,使用默認圖標,沒有按鈕,不多說,貼代碼:
new AlertDialog.Builder(MyActivity.this).setTitle("提示標題").setMessage("這是提示內容").show();
(MyActivity 是類名,請換成自己的!!)
下面我們為這個對話框加個按鈕,效果:
代碼:
new AlertDialog.Builder(MyActivity.this) .setTitle("這是標題") .setMessage("這是提示內容") .setPositiveButton("確定", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialoginterface, int i){ //按鈕事件 Toast.makeText(Lesson_01_Pic.this, "確定",Toast.LENGTH_LONG).show(); } }).show();
添加按鈕時,需要同時為該按鈕指定監聽器。
下面,我們修改一個圖標,添加兩個按鈕,同時顯示多個選項,先看下效果:
代碼:
package com.yfz; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MyActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.b01); button.setText("對話框"); button.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { //選項數組 String[] choices={"非死book","推ter"}; //Check判斷數組,與選項對應 boolean[] chsBool = {true,false}; //包含多個選項及復選框的對話框 AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this) .setIcon(android.R.drawable.btn_star_big_on) .setTitle("調查") .setMultiChoiceItems(choices, chsBool, multiClick) .setPositiveButton("Yes", onclick) .setNegativeButton("No", onclick).create(); dialog.show(); } }); } /** * 對話框復選框事件監聽器 */ OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){ @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { Toast.makeText(Lesson_02_Dia.this, "第"+(which+1)+"項,選中結果:"+isChecked,Toast.LENGTH_SHORT).show(); } }; /** * 對話框按鈕點擊事件監聽器 */ OnClickListener onclick = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case Dialog.BUTTON_NEGATIVE: Toast.makeText(Lesson_02_Dia.this, "No..", Toast.LENGTH_LONG).show(); break; case Dialog.BUTTON_NEUTRAL: Toast.makeText(Lesson_02_Dia.this, "I don't know.", Toast.LENGTH_LONG).show(); break; case Dialog.BUTTON_POSITIVE: Toast.makeText(Lesson_02_Dia.this, "Yes!!", Toast.LENGTH_LONG).show(); break; } } }; }
說明已經寫在注釋中了。
下面再介紹一種比較常用的式樣,如圖:
代碼:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.b01); button.setText("對話框"); button.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { //選項數組 String[] choices={"新浪微博","校內","街旁"}; //包含多個選項的對話框 AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this) .setIcon(android.R.drawable.btn_star) .setTitle("分享") .setItems(choices, onselect).create(); dialog.show(); } }); } /** * 選項的事件監聽器 */ OnClickListener onselect = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub switch (which) { case 0: Toast.makeText(Lesson_02_Dia.this, "您選擇了新浪微博.",Toast.LENGTH_SHORT).show(); break; case 1: Toast.makeText(Lesson_02_Dia.this, "您選擇了校內",Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(Lesson_02_Dia.this, "您選擇了街旁",Toast.LENGTH_SHORT).show(); break; } } };
如果在彈出框中做一個登陸界面。
繼續補充...先上圖...
頁面login.xml: 示例寫的比較簡單,布局大家可以自己完善、修改。
<?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/widget36" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/widget37" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用戶名:" > </TextView> <EditText android:id="@+id/widget38" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="18sp" > </EditText> <TextView android:id="@+id/widget39" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密碼:" > </TextView> <EditText android:id="@+id/widget40" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="18sp" > </EditText> </TableLayout>代碼 : (也比較簡單)
LayoutInflater factory = LayoutInflater.from(MyActivity.this); //獲得自定義對話框 View view = factory.inflate(R.layout.login, null); AlertDialog dialog02 = new AlertDialog.Builder(MyActivity.this) .setIcon(android.R.drawable.btn_star) .setTitle("登錄") .setView(view) .setPositiveButton("Yes", onclick) .setNegativeButton("No", onclick).create(); dialog02.show();
有問題歡迎大家交流。
本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!