自定义dialog
首先它继承自dialog
然后创建buider建造者
在建造者中创建Buider 的方法用于回调
/**
* Created by pig on 2017/4/20.
*/
public class MyDialog extends Dialog {
public MyDialog (@NonNull Context context) {
super (context);
}
public MyDialog (@NonNull Context context, @StyleRes int themeResId) {
super (context, themeResId);
}
protected MyDialog (@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
super (context, cancelable, cancelListener);
}
/**
* 建造者
*
*/
public static class Builder {
private Context context;
private int topImageId;
private String title;
private String message;
private OnClickListener ButtonClickListener;
public EditText editText;
private Button button;
public String getText (){
return editText.getText().toString();
}
public Builder (Context context) {
this .context = context;
}
public Builder setTitle (String title){
this .title = title;
return this ;
}
public Builder ButtonClickListener (OnClickListener listioner){
this .ButtonClickListener =listioner;
return this ;
}
public MyDialog create (){
final MyDialog dialog = new MyDialog(context, R.style.MyDialog);
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.input_dialog,null );
TextView titleView = (TextView) view.findViewById(R.id.tv_title);
if (null == title){
titleView.setText("请输入:" );
}else {
titleView.setText(title);
}
editText = (EditText) view.findViewById(R.id.edit_input);
button = (Button) view.findViewById(R.id.bt_sure);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v) {
ButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
dialog.dismiss();
}
});
ViewGroup.LayoutParams params = new LinearLayoutCompat
.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.addContentView(view,params);
return dialog;
}
}
}
调用的方式
final MyDialog.Builder builder = new MyDialog.Builder (this)
builder.ButtonClickListener (new DialogInterface.OnClickListener () {
@Override
public void onClick(DialogInterface dialog, int which) {
String a =builder.getText ()
edit_name.setText (a)
Log.e ("1111111" ,a)
Toast.makeText (MainActivity.this ,a,Toast.LENGTH _SHORT).show ()
}
})
builder.create ().show ()
—-GitHub地址—-