关于实现自定义Dialog和实现Dialog里view的事件监听的两种方法

时间:2022-04-22 09:40:06

一.自定义dialog。

二.实现dialog里view的事件监听

1.自定义dialog比较简单。在实例化new的时候,加入样式,布局就行了。或者重写dialog。

2.实现dialog里view的事件监听一,在一个dialog里面会有很多的view,如何监听view的时间呢?第一个方法就是把要添加到dialog的布局先new出,然后在通过dialog.setContentView()..看代码,代码来自于网络

  Dialog dialog = new Dialog(AAAAAActivity.this, R.style.dialog);
// 设置它的ContentView
// 得到myview才可以通过Id找到控件,实现dialog里的按钮的点击事件
View myView = LayoutInflater.from(AAAAAActivity.this).inflate(
R.layout.pay_create_dialog, null);
dialog.setContentView(myView);
dialog_btn = (Button) myView.findViewById(R.id.dialog_btn);
/** dialog_btn的点击事件 */
dialog_btn.setOnClickListener(new DialogOnClickListener());
dialog.show();

3.实现dialog里view的事件监听二。重写dialog时加入监听事件。代码来自于网络

package com.demo;   

 import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class LeaveMeetingDialog extends Dialog implements OnClickListener{ private Button quitBtn,stopBtn,cancelBtn;
private LeaveMeetingDialogListener listener; public interface LeaveMeetingDialogListener{
public void onClick(View view);
} public LeaveMeetingDialog(Context context,int theme,LeaveMeetingDialogListener listener) {
super(context,theme);
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.leave_meeting_dialog);
initViews();
} private void initViews(){
quitBtn = (Button)findViewById(R.id.quit_btn);
stopBtn = (Button)findViewById(R.id.stop_btn);
cancelBtn = (Button)findViewById(R.id.cancel_btn); quitBtn.setOnClickListener(this);
stopBtn.setOnClickListener(this);
cancelBtn.setOnClickListener(this);
} @Override
public void onClick(View v) {
listener.onClick(v);
} } ---调用处: [java]
LeaveMeetingDialog dialog = new LeaveMeetingDialog(this,R.style.Theme_CustomDialog,
new LeaveMeetingDialogListener() {
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.quit_btn:break;
case R.id.stop_btn:break;
case R.id.cancel_btn:break;
}
}
});
dialog.show();

在网上了一些方法,就找到这两种。。如果还有请他方法,请留言,谢谢!!!