AlertDialog使用
Dialog是对话框的基类,Android开发文档写明避免对Dialog进行实例化来调用,应用其子类AlertDialog来进行实例化
并应用。
- 首先调用AlertDialog.Builder创建对话框
builder.setTitle("标题")
.setMessage("消息“)
.setPositiveButton(R.string.positive_button,new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog,int id){
//具体动作实现
}
});
//以下将定制好的AlertDialog生成实例并且显示
Dialog dialog=builder.create();
dialog.show();
一般Android自带的Dialog布局不一定能够满足开发中的需求,这时候需要我们自定义来实现射鸡师令人发指的要求
所幸AlertDialog有个setView()方法 来引入我们指定义的布局。
- 自定义AlertDialog布局
以下是一个丑陋的例子
/layout.mydialog
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="64dp"
android:text="@string/login"
android:gravity="center"/>
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/username"
android:layout_marginTop="16dp"
android:layout_marginRight="4dp"
android:layout_marginLeft="4dp"
android:layout_marginBottom="4dp"/>
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/password"
android:layout_marginTop="4dp"
android:layout_marginRight="4dp"
android:layout_marginLeft="4dp"
android:layout_marginBottom="16dp"
android:fontFamily="sans-serif"/>
</LinearLayout>
/myDialog.java
package com.coolweather.uim;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MyDialog extends AppCompatActivity implements View.OnClickListener{
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dia);
button=findViewById(R.id.buttonTest);
button.setOnClickListener(this);
}
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.buttonTest:{
showMyDialog();
break;
}
}
}
private void showMyDialog(){
Dialog dialog=getDialog();
dialog.show();
}
private Dialog getDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setView(getLayoutInflater().inflate(R.layout.mydialog,null))
.setPositiveButton(R.string.positive_button,new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog,int id){
dialog.dismiss();
}
})
.setNegativeButton(R.string.negative_button,new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog,int id){
dialog.dismiss();
}
});
return builder.create();
}
}
效果图