提供佛山顺德网站建设,包商科技wordpress,如何制作网站最简单的方法,商丘做网站sqlongliqi文章目录整体思路实现方法第一步第二步第三步第四步各位看官们大家好#xff0c;上一回中咱们说的例子是自定义Dialog主题,这一回中咱们说的例子是
自定义Dialog。闲话休提#xff0c;言归正转#xff0c; 让我们一起Talk Android吧#xff01;整体…
文章目录整体思路实现方法第一步第二步第三步第四步各位看官们大家好上一回中咱们说的例子是自定义Dialog主题,这一回中咱们说的例子是
自定义Dialog。闲话休提言归正转 让我们一起Talk Android吧整体思路
我们在上一章回中介绍了如何定义Dialog的主题本章回将介绍如何自定义Dialog。
下面我分享一个整体的思路。自定义一个Dialog的子类然后在此子类中使用自定义的主题和布局。布局的内容自己决定我们把布局中的内容显示出来并且可以响应相关的事件就可以。
这种自定义方式的思路就是我们在前面章回中介绍过的扩展系统组件我们在这里扩展的组件是Dialog.
实现方法
有了整体的思路后我们通过文字结合代码的方式来演示如何自定义Dialog。
第一步
创建Dialog的子类,我们没有直接继承Dialog而继承了它的子类AlertDialog
public class DialogCustom extends AlertDialog {//需要重写构造方法这里就不列出来了
} 第二步
.创建Dialog对象创建对象时绑定自定义的主题(也就是上一章回中介绍的主题
mAlertDialog new AlertDialog.Builder(mContext, R.style.CustomDialogTheme).create();第三步
自定义布局文件并且绑定到Dialog上可以使用Dialog的Builder绑定也可以使用window绑定 Window window mAlertDialog.getWindow();WindowManager.LayoutParams layoutParams window.getAttributes();//layoutId是自定义的布局idView contentView LayoutInflater.from(mContext).inflate(layoutId,null);
// builder.setView(contentView);
// builder.setView(R.layout.dialog_input_content_view);//使用Window的setView效果好一些window.setContentView(contentView);第四步
显示布局中的组件给组件添加事件响应 mBTYes (Button) window.findViewById(R.id.id_bt_dialog_yes);mBTNo (Button) window.findViewById(R.id.id_bt_dialog_no);mBTYes.setOnClickListener(v - onYesButtonClicked());mBTNo.setOnClickListener(v - onNoButtonClicked());mTitle (TextView)window.findViewById(R.id.id_dialog_cust_info_title) ;mContent (TextView)window.findViewById(R.id.id_dialog_cust_info_content) ;mTitle.setText(Custom dialog Title);mContent.setText(This is a content);在自定义的布局中我们使用TextView来显示Dialog的标题和消息内容使用Button来响应Yes/No事件我们只列出了事件的方法没有列出这些方法的实现内容我推荐的做法是创建监听器让调用Dialog的程序来实现监听器这样可以更加灵活地使用Dialog。毕竟系统组件中的Dialog也是这么做的。下面是示例代码
private void onYesButtonClicked () {if(mYesBTClickedListener ! null) {mYesBTClickedListener.onBTClicked();mAlertDialog.dismiss();}
}private void onNoButtonClicked () {if(mNoBTClickedListener ! null) {mNoBTClickedListener.onBTClicked();mAlertDialog.dismiss();}
}public interface OnYesBTClickedListener {void onBTClicked();
}public interface OnNoBTClickedListener {void onBTClicked();
}public void setYesBTClickedListener(OnYesBTClickedListener yesBTClickedListener) {mYesBTClickedListener yesBTClickedListener;
}public void setNoBTClickedListener(OnNoBTClickedListener noBTClickedListener) {mNoBTClickedListener noBTClickedListener;
}所有代码ok后还需要调用Dialog的show()方法来显示Dialog。我在这里就不演示程序的运行结果了建议大家自己动手去实践。
看官们关于自定义Dialog的例子咱们就介绍到这里欲知后面还有什么例子且听下回分解