dialog使用

问题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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值