import android.app.Dialog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
//自定义对话框格式,封装成一个自定义类
public class MyDialog extends Dialog {
public MyDialog(Context context, int width, int height, View layout, int style) {
//继承上下文和stytle
super(context, style);
setContentView(layout);
Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.gravity = Gravity.CENTER;
window.setAttributes(params);
}
}
private void dialogshow(final String Name, final String Tel) {
LayoutInflater inflater = LayoutInflater.from(getContext());
//加载自定义的格式
View v=inflater.inflate(R.layout.addrelstion,null);
//确定,取消
Button btn_save = v.findViewById(R.id.dialog_btn_save);
Button btn_cancel = v.findViewById(R.id.dialog_btn_cancel);
final Dialog dialog=new MyDialog(getContext(),0,0,v,R.style.DialogTheme);
dialog.setCancelable(true);
dialog.show();
//解决dialog中EditText不能弹出键盘的问题
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
addName=(EditText)v.findViewById(R.id.addName);
Log.e("Editext",addName.getText().toString());
addTel=(EditText) v.findViewById(R.id.addTel);
dialog.getWindow().setContentView(v);//自定义布局应该在这里添加,要在dialog.show()的后面
//dialog.getWindow().setGravity(Gravity.CENTER);//可以设置显示的位置
final ContentValues values = new ContentValues();
final DatabaseHelper dbHelper = new DatabaseHelper(getContext().getApplicationContext());
//在弹出的对话框中显示联系人信息,如果之前未创建过,则显示为空,若创建过,则显示.
addName.setText(Name.toCharArray(),0,Name.length());
addTel.setText(Tel.toCharArray(),0,Tel.length());
//保存按钮点击事件
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
values.put("name", addName.getText().toString());
values.put("tel", addTel.getText().toString());
//创建新的联系人
if(Name=="")
{
dbHelper.insert(values);
}
//修改信息
else if(Name!="")
{
dbHelper.update(values,Name);
}
getRelationFromDB();
dialog.dismiss();
}
});
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
final Dialog dialog=new MyDialog(getContext(),0,0,v,R.style.DialogTheme);
dialog.setCancelable(true);
dialog.show();
v是自定义的dialog样式的view,这里自定义的dialog主题也要传进去.
setCancelable(true) 设置dialog可取消。
因为是自定义的,所以 不需要系统默认setPositivaButton()和setNegativeButton()。
直接对自定义格式的按钮添加监听事件。
有一点需要注意,就是dialog中自定义的EditText无法弹出键盘,所以我找到的解决办法是添加这行代码:
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
效果图: