问题1、用户选择取消或者是点击屏幕空白部分时让dialog消失。
所遇到的问题就是点击屏幕空白部分dialog不消失,解决步骤如下:
1、在dialog.show()之前调dialog.setCanceledOnTouchOutside(true);
(一般情况下就可以成功了,如果还是不行请看2)
2、检查自定义的view布局是否覆盖了整个屏幕,也就是说你所点击的屏幕空白部分实际上是你自定义view上面的一个view或者viewGroup,所以你无论怎么点击都点击dailog都不会消失,所以在你自定义的view上把最外层的viewGroup改成固定高度试试,就可以知道是否是这个原因造成dialog不消失。
问题2、dismiss和hide区别
dismiss和hide方法都可以隐藏对话框,在需要的时候也可以用show方法调用显示。但是,这两者是有区别的。
dismiss方法会释放对话框所占的资源,而hide方法不会。activity退出前必须调用dismiss方法关闭对话框。
如果对话框上有progressbar,你会发现,调用dismiss方法后,再调用show方法,出来的对话框,上面的progressbar不再会转动,而调用hide方法的则没有问题。
所以,最正确的调用方法是,在activity的onDestory方法里调用dismiss方法,其他地方都用hide方法隐藏对话框。
问题3、设置dialog宽高
设置为跟屏幕一样的宽度
//为了撑开布局,添加宽带设置
WindowManager wm = (WindowManager)mContent.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
WindowManager.LayoutParams params = this.getWindow().getAttributes();
params.width = width;
params.height = height;
this.getWindow().setAttributes(params);
dialog 使用
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
public class CustomDialog extends Dialog implements View.OnClickListener{
private ImageView back;
private TextView title;
private LinearLayout ll1;
private Context mContent;
public UserDealDialog(Context context, int flag) {
super(context, R.style.dialog_style);
mContent = context;
}
public UserDealDialog(Context context) {
super(context,R.style.dialog_style);
mContent = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
setContentView(R.layout.user_layout);
initView();
}
public void initView() {
back = (ImageView)findViewById(R.id.iv_manager_left_icon);
title = (TextView)findViewById(R.id.title_text);
ll1 = (LinearLayout)findViewById(R.id.ll1);
back.setOnClickListener(this);
ll1.setOnClickListener(this);
//为了撑开布局,添加宽带设置
WindowManager wm = WindowManager)mContent.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
WindowManager.LayoutParams params = this.getWindow().getAttributes();
params.width = width;
params.height = height;
this.getWindow().setAttributes(params);
title.setText("用户信息设置");
}
@Override
public void onClick(View v){
if(v.getId() == R.id.ll1){
callback.addUser();
}
dismissDialog();
}
private void dismissDialog(){
this.dismiss();
}
private UserCallback callback;
public void setUserCallback (UserCallback onClickCloseListener) {
this.callback = onClickCloseListener;
}
}
style文件dialog_style
<resources>
<style name="dialog_style">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:background">@color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowIsFloating">true</item>
</style>
</resources>
user_layout.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffff">
<RelativeLayout
android:id="@+id/manager_title_layout"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:gravity="center_vertical">
<ImageView
android:id="@+id/iv_manager_left_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/back"
android:gravity="center_vertical"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/title_text"
android:layout_centerInParent="true"
android:text="测试title"
android:textColor="#000000"
android:textSize="15dp" />
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#999999" />
<LinearLayout
android:id="@+id/ll1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:padding="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:src="@drawable/add_user"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="增加一个用户"/>
</LinearLayout>
</LinearLayout>