AlertDiadig對話方塊的幾種常見的使用方式
阿新 • • 發佈:2019-01-29
在說AlertDialog之前先捎帶提一下Log日誌:
1.Log.e(tag,message)//列印error資訊,顏色為紅色。
2.Log.w(tag,message)//列印warn資訊,顏色為橙色。
3.Log.i(tag,message)//列印info通知資訊,顏色為綠色。
4.Log.d(tag,message)//列印debug資訊,顏色為藍色。
5.Log.v(tag,message)//列印verbose資訊,顏色為黑色。
日誌級別一次遞減,日誌的輸出量從少到多。
首先先明確一下什麼是AlertDialog:
對話方塊是在當前介面彈出的一個小視窗,用於顯示重要的提示資訊。提示使用者輸入資訊,確認資訊,或者顯示某種狀態,如下載進度退出提示等等。一般情況下,一般情況下,使用者要與對話方塊進行互動,然後返回到被遮蓋的介面以繼續運行當前的應用程式。
好了接下來說一下第一種對話方塊的形式:
在layout中activity_main中先引入一個button控制元件,貼上程式碼:
接下來在MainActivity中編寫程式碼:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.alertdialog_demo.MainActivity" tools:ignore="MergeRootFrame" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:id="@+id/dialog_btn1" android:text="確認對話方塊" /> </LinearLayout>
package com.example.alertdialog_demo; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; import android.os.Build; public class MainActivity extends ActionBarActivity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initEvent(); } private void initEvent() { // TODO Auto-generated method stub button = (Button) findViewById(R.id.dialog_btn1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showAlertDialog(); } }); } protected void showAlertDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("確認對話方塊資訊:"); builder.setMessage("你確定要退出?");
<span style="white-space:pre"> </span>此處的OnclickListener不是android.view.View.OnClickListener而是android.content.DialogInterface.OnClickListener
builder.setPositiveButton("確認",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "點選了確認按鈕",Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "點選了取消按鈕",Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
第二種是單選對話方塊,程式碼只是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog2();即可.下面貼上showAlertDialog2();的程式碼:
protected void showAlertDialog2() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("請選擇性別:");
// builder.setMessage("你確定要退出?");
builder.setSingleChoiceItems(sex, 3, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,"你的性別是:"+sex[which],1000).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
上面程式碼中buildersetSingleChoiceItems(items, checkedItem, listener);三個引數,第一個引數是儲存單選框裡面內容的陣列,第二個引數是預設選中單選框的第一個選項,第三個是設定監聽器。
第三種是多選按鈕對話方塊,程式碼只是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog3();即可.下面貼上showAlertDialog3();的程式碼:
protected void showAlertDialog3() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("選擇你的愛好:");
// builder.setMessage("你確定要退出?");
//此處監聽器使用的是多選按鈕對話方塊
builder.setMultiChoiceItems(hobby, null, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked){
Toast.makeText(MainActivity.this,"你的愛好是:"+hobby[which], 500).show();
}else {
Toast.makeText(MainActivity.this,"你不感興趣的是:"+hobby[which], 500).show();
}
}
});
builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
整個對話方塊就會隱藏掉
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
第四種是列表對話方塊,程式碼只是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog4();即可.下面貼上showAlertDialog4();的程式碼:protected void showAlertDialog4() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("學校老師:");
builder.setItems(school, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "我喜歡"+school[which], 1000).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
第五種是自定義對話方塊,還是把initEvent方法中的Onclick方法中的showAlertDialog();換成showAlertDialog5();即可.
此外需要自己自定義一個layout佈局,然後通過LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.user_defined, null);把layout佈局轉成View 物件,然後把view物件新增到AlertDialog對
話框的builder物件中:先看一下效果圖:
貼上程式碼:
protected void showAlertDialog5() {
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.user_defined, null);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
setTitle("自定義佈局");
builder.setView(view);
AlertDialog dialog = builder.create();
dialog.show();
}