【Android】對話方塊 AlertDialog

來源:互聯網
上載者:User

本講介紹一下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(Lesson_01_Pic.this).setTitle("提示標題").setMessage("這是提示內容").show();  

(Lesson_02_Dia是類名,請換成自己的!!)

下面我們為這個對話方塊加個按鈕,效果:

代碼:

new AlertDialog.Builder(Lesson_01_Pic.this)<br /> .setTitle("這是標題")<br /> .setMessage("這是提示內容")<br /> .setPositiveButton("確定",<br /> new DialogInterface.OnClickListener(){<br /> public void onClick(DialogInterface dialoginterface, int i){<br /> //按鈕事件<br /> Toast.makeText(Lesson_01_Pic.this, "確定",Toast.LENGTH_LONG).show();<br /> }<br /> }).show();  

添加按鈕時,需要同時為該按鈕指定監聽器。

下面,我們修改一個表徵圖,添加兩個按鈕,同時顯示多個選項,先看下效果:

代碼:

package com.yfz;<br />import android.app.Activity;<br />import android.app.AlertDialog;<br />import android.app.Dialog;<br />import android.content.DialogInterface;<br />import android.content.DialogInterface.OnClickListener;<br />import android.content.DialogInterface.OnMultiChoiceClickListener;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.widget.Button;<br />import android.widget.Toast;<br />public class Lesson_02_Dia extends Activity {<br /> /** Called when the activity is first created. */<br /> @Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);</p><p> Button button = (Button)findViewById(R.id.b01);<br /> button.setText("對話方塊");<br /> button.setOnClickListener(new Button.OnClickListener(){<br />@Override<br />public void onClick(View v) {<br />//選項數組<br />String[] choices={"Facebook","Twitter"};<br />//Check判斷數組,與選項對應<br />boolean[] chsBool = {true,false};<br /> //包含多個選項及複選框的對話方塊<br />AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)<br /> .setIcon(android.R.drawable.btn_star_big_on)<br /> .setTitle("調查")<br /> .setMultiChoiceItems(choices, chsBool, multiClick)<br /> .setPositiveButton("Yes", onclick)<br /> .setNegativeButton("No", onclick).create();<br />dialog.show();<br />}</p><p> });<br /> }</p><p> /**<br /> * 對話方塊複選框事件監聽器<br /> */<br /> OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){<br />@Override<br />public void onClick(DialogInterface dialog, int which, boolean isChecked) {<br />Toast.makeText(Lesson_02_Dia.this, "第"+(which+1)+"項,選中結果:"+isChecked,Toast.LENGTH_SHORT).show();<br />}</p><p> };</p><p>/**<br /> * 對話方塊按鈕點擊事件監聽器<br /> */<br />OnClickListener onclick = new OnClickListener() {<br />@Override<br />public void onClick(DialogInterface dialog, int which) {<br />switch (which) {<br />case Dialog.BUTTON_NEGATIVE:<br />Toast.makeText(Lesson_02_Dia.this, "No..",<br />Toast.LENGTH_LONG).show();<br />break;<br />case Dialog.BUTTON_NEUTRAL:<br />Toast.makeText(Lesson_02_Dia.this, "I don't know.",<br />Toast.LENGTH_LONG).show();<br />break;<br />case Dialog.BUTTON_POSITIVE:<br />Toast.makeText(Lesson_02_Dia.this, "Yes!!",<br />Toast.LENGTH_LONG).show();<br />break;<br />}<br />}<br />};<br />} 

說明已經寫在注釋中了。

下面再介紹一種比較常用的式樣,

代碼:

@Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);</p><p> Button button = (Button)findViewById(R.id.b01);<br /> button.setText("對話方塊");<br /> button.setOnClickListener(new Button.OnClickListener(){<br />@Override<br />public void onClick(View v) {<br />//選項數組<br />String[] choices={"新浪微博","校內","街旁"};<br /> //包含多個選項的對話方塊<br />AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)<br /> .setIcon(android.R.drawable.btn_star)<br /> .setTitle("分享")<br /> .setItems(choices, onselect).create();<br />dialog.show();<br />}<br /> });<br /> }</p><p>/**<br /> * 選項的事件監聽器<br /> */<br /> OnClickListener onselect = new OnClickListener() {<br />@Override<br />public void onClick(DialogInterface dialog, int which) {<br />// TODO Auto-generated method stub<br />switch (which) {<br />case 0:<br />Toast.makeText(Lesson_02_Dia.this, "您選擇了新浪微博.",Toast.LENGTH_SHORT).show();<br />break;<br />case 1:<br />Toast.makeText(Lesson_02_Dia.this, "您選擇了校內",Toast.LENGTH_SHORT).show();<br />break;<br />case 2:<br />Toast.makeText(Lesson_02_Dia.this, "您選擇了街旁",Toast.LENGTH_SHORT).show();<br />break;<br />}<br />}</p><p> }; 

好了,今天就寫到這,改天寫一下,如果在彈出框中做一個登陸介面。

繼續補充...先...

頁面login.xml: 樣本寫的比較簡單,布局大家可以自己完善、修改。

<?xml version="1.0" encoding="utf-8"?><br /><TableLayout<br />android:id="@+id/widget36"<br />android:layout_width="fill_parent"<br />android:layout_height="fill_parent"<br />android:orientation="vertical"<br />xmlns:android="http://schemas.android.com/apk/res/android"<br />><br /><TextView<br />android:id="@+id/widget37"<br />android:layout_width="wrap_content"<br />android:layout_height="wrap_content"<br />android:text="使用者名稱:"<br />><br /></TextView><br /><EditText<br />android:id="@+id/widget38"<br />android:layout_width="wrap_content"<br />android:layout_height="wrap_content"<br />android:text=""<br />android:textSize="18sp"<br />><br /></EditText><br /><TextView<br />android:id="@+id/widget39"<br />android:layout_width="wrap_content"<br />android:layout_height="wrap_content"<br />android:text="密碼:"<br />><br /></TextView><br /><EditText<br />android:id="@+id/widget40"<br />android:layout_width="wrap_content"<br />android:layout_height="wrap_content"<br />android:text=""<br />android:textSize="18sp"<br />><br /></EditText><br /></TableLayout><br /> 

代碼 : (也比較簡單)

LayoutInflater factory = LayoutInflater.from(Lesson_02_Dia.this);<br />//獲得自訂對話方塊<br />View view = factory.inflate(R.layout.login, null);</p><p>AlertDialog dialog02 = new AlertDialog.Builder(Lesson_02_Dia.this)<br /> .setIcon(android.R.drawable.btn_star)<br /> .setTitle("登入")<br /> .setView(view)<br /> .setPositiveButton("Yes", onclick)<br /> .setNegativeButton("No", onclick).create();<br />dialog02.show(); 

有問題歡迎大家交流。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.