Android dialog实现透传点击事件
时间: 2023-07-15 20:15:42 浏览: 193
要实现 Android dialog 的透传点击事件,需要使用 DialogFragment 类,该类可以让你将 dialog 嵌入到 activity 中,并且可以处理 dialog 的点击事件。
以下是实现透传点击事件的步骤:
1. 创建一个新的 DialogFragment 类并实现 onCreateDialog 方法,在该方法中创建 dialog 并返回。
2. 在 onCreateView 方法中获取 dialog 的根视图,并设置该视图的点击事件监听器。
3. 在点击事件监听器中,判断点击的视图是否是需要透传点击事件的视图,如果是,则调用 activity 中对应视图的点击事件方法。
下面是一个示例代码:
```java
public class MyDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// 创建 dialog
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("My Dialog");
builder.setMessage("This is my dialog");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 点击 OK 按钮
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 点击 Cancel 按钮
}
});
return builder.create();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// 获取 dialog 的根视图
View rootView = inflater.inflate(R.layout.dialog_layout, container, false);
// 设置根视图的点击事件监听器
rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 判断点击的视图是否是需要透传点击事件的视图
if (v.getId() == R.id.btn_transparent) {
// 调用 activity 中对应视图的点击事件方法
((MainActivity) getActivity()).onTransparentButtonClick();
}
}
});
return rootView;
}
}
```
上面的代码中,我们创建了一个 MyDialogFragment 类,并实现了 onCreateDialog 和 onCreateView 方法。在 onCreateDialog 方法中,我们创建了一个 AlertDialog 对象作为 dialog。在 onCreateView 方法中,我们获取 dialog 的根视图,并设置该视图的点击事件监听器。在点击事件监听器中,我们判断点击的视图是否是需要透传点击事件的视图,如果是,则调用 activity 中对应视图的点击事件方法。
阅读全文