我在android中使用对话框创建自定义弹出窗口。使用自定义弹出窗口时,我使用取消按钮关闭它。但现在我想通过触摸弹出窗口来关闭它。怎么样?
到目前为止我一直在尝试
private void showDetails() {
final Dialog dialog = new Dialog(mContext, android.R.style.Theme_Translucent);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.popup_base_menu);
dialog.setCanceledOnTouchOutside(true);
text_cancel = (TextView) dialog.findViewById(R.id.text_cancel);
txt_create_group_chat = (TextView) dialog.findViewById(R.id.txt_create_group_chat);
txt_create_chat = (TextView) dialog.findViewById(R.id.txt_create_chat);
txt_create_chatroom = dialog.findViewById(R.id.txt_create_chatroom);
text_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
txt_create_group_chat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent in = new Intent(mContext, CreateGroupChat.class);
startActivity(in);
dialog.cancel();
}
});
txt_create_chat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent in = new Intent(mContext, SearchActivity.class);
startActivity(in);
dialog.cancel();
}
});
txt_create_chatroom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent in = new Intent(mContext, CreateChatroomActivity.class);
startActivity(in);
dialog.cancel();
}
});
dialog.show();
}
答案 0 :(得分:0)
使用
setCanceledOnTouchOutside(true)
请参阅Android开发人员documentation。
使用AlertDialog.Builder
创建显示here的对话框。此类提供与使用的Dialog
相同的构造函数参数。
此外,此问题已有answer。
答案 1 :(得分:0)
在显示对话框之前需要进行三项更改:
dialog.setCanceledOnTouchOutside(true);
setCancelable(boolean)
可能有用的最后一件事是转到布局popup_base_menu
并将根视图height
和width
更改为:
wrap_content
应该代替match_parent
。
应在dialog.show();