官網AlertDialog 簡介(英文)
AlertDialog/ProgressDialog 對話框處理
首先這是我的UI layout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentLeft="true"
android:ems="10"
android:inputType="textPersonName" >
宣告他們
private EditText get;
private Button push;
private String tmp;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
push = (Button) findViewById(R.id.push);
get = (EditText)findViewById(R.id.get);
push.setOnClickListener(new OnClickListener(){
public void onClick(View view){
tmp = get.getText().toString();
say();
}
}
);
}
//實作一個method 並設定標題跟裡面顯示的文字,在這邊我將將顯示的文字設成EditText get取得的值,並且可以設成OK或是我知道了
也可以將訊息內容 設成exception e 顯示提示錯誤的文字
private void say() {
new AlertDialog.Builder(this).setTitle("您好")
.setMessage(tmp + "您好")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
}).show();
結果:
假設輸入 丁丁 就會變成 丁丁您好 ; 迪西就會變成 迪西您好 ; 波波就會變成 波波您好
話說有個類似的東西叫做Toast (吐司)的 也會有類似的效果,改天來玩玩!
吐司已於2013/1/25製作發布於http://kunhsien.blogspot.tw/2013/01/androidtoast-survey.html
用 create創建 alertdialog物件
AlertDialog dialog = new AlertDialog.Builder(context).create();
關閉對話框:
dialog.dimiss();
自行定義dialog的參數,需要在show()方法後面設定:
- dialog.show()
- WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
- params.alpha = 0.8f; //透明度
- params.width = 460; //dialog寬度
- params.y = height -20; //顯示位置,默認居中顯示
- controlPanel.getWindow().setAttributes(params);
[Android]AlertDialog進階應用---內嵌圖片的AlertDialog
相關Survey:
AlertDialog用法续:在对话框显示View
在[Android]一個簡單的小互動 彈跳視窗AlertDialog 中我們了解如何呼叫並實作一個AlertDialog的訊息彈跳視窗
而如果只是單純訊息顯示是否嫌太過單調
因為最近需要實作一個內嵌圖片的AlertDialog
除了內建的三個按鈕
setPositiveButton()--確認
setNegativeButton()--取消
setNeutralButton()--忽略
外若有表單實作需求可以查看相關survey:
Givemepass - 如何使用AlertDialog
shung007-[Android] 如何發送簡訊並使用自訂的AlertDialog (How to send SMS and use custom AlertDialog)
Chickenrice's Workshop - [Android] AlertDialog-嵌入客製化表 (參考成功)
gyflyx的专栏 - android Dialog介绍
老鼠的隨手筆記 - Android - 基礎筆記(一) AlertDialog
安卓巴士 - AlertDialog详解 (相關應用應有盡有,寫得很詳細)
實作本文開始:
找一張圖片 放在res/drawable資料夾裡面
在layout裡面建立一個xml - dialog.xml
內文:
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/dingding" />
主程式:
public class MainActivity extends Activity {
private EditText et;
private Button bt;
private String logid;
private ImageView img;
private View adview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText)this.findViewById(R.id.et);
bt = (Button)this.findViewById(R.id.bt);
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
adview = inflater.inflate(R.layout.dialog,null);
bt.setOnClickListener(new OnClickListener(){
public void onClick(View v){
logid = et.getText().toString();
say();
}});}
private void say() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(logid + "您好,經過前世運算機算出你前世可能是:");
//builder.setMessage("");
builder.setView(adview);
DialogInterface.OnClickListener OkClick = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
};
builder.setPositiveButton("確定", OkClick);
builder.show();
}}}
執行結果1:
執行結果2:(好笑的來了...)
圖片是寫死的 所以誰輸入 誰的前世都是丁丁
但是其實可以用一些程式去控制 像if 或 switch機制等
收工!
========================================================================
2013/1/28更新 點選AlertDialog的確定後 再輸入一次值之後 程式會直接出現未知的錯誤並關閉
參見survey:http://www.javaworld.com.tw/jute/post/view?bid=26&id=300242
http://emmet1988.iteye.com/blog/1039436
http://www.eoeandroid.com/thread-66288-1-1.html
有評論說是一妻不二嫁 一個xml對應到兩個view的關係所以出錯
所以必須釋放掉 "removeView"
解法:
將LayoutInflater inflater = getLayoutInflater();
View adview = inflater.inflate(R.layout.dialog,null);
設成局部變數 即:
private void say(int seat_id) {
LayoutInflater inflater = getLayoutInflater();
View adview = inflater.inflate(R.layout.dialog,null);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(seat_id + "號座乘客按了下車鈴");
//builder.setMessage("");
builder.setView(adview);
DialogInterface.OnClickListener OkClick = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
};
builder.setPositiveButton("確定", OkClick);
builder.show();
}
就解決了,不過變成沒辦法儲存資訊 因為呼叫method才會產生view
再點選又是新的view了...
沒有留言:
張貼留言