android自定义dialog-各种可控制

最近项目中刚好用到这个,最后我也是借鉴了一个朋友的方法,所以班门弄斧,就贴出来大家一起学习学习,很实用。先上传张效果图:

 

1.java文件中代码部分

 

private void showDialog(final HashMap<String, String> info) {
        final Context context = new ContextThemeWrapper(HomeActivity.this, R.style.custom_dialog);//自定义一个style
        //借助dialog的样式,做简单修改        
        final AlertDialog dialog = new AlertDialog.Builder(context).create();
//        dialog.setOnCancelListener(new OnCancelListener() {
//            @Override
//            public void onCancel(DialogInterface dialog) {
//                mLog.info("isOptional: " + info.get("isOptional"));
//                if (info.get("isOptional").equals("0")) {
//                    ActivityStackManager.finish();
//                } else {
//                    dialog.dismiss();
//                }
//            }
//        });
//        dialog.setTitle("");
        dialog.show();
        final Window window = dialog.getWindow();
        final WindowManager m = getWindowManager();
        final Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高

        final WindowManager.LayoutParams p = window.getAttributes(); // 获取对话框当前的参数值
	//设置显示dialog处于屏幕的位置--宽度+高度
        p.height = (int)(d.getHeight() * 0.5); // 高度设置为屏幕的0.5
        p.width = (int)(d.getWidth() * 0.8); // 宽度设置为屏幕的0.8

        window.setAttributes(p); // 设置生效
         window.setContentView(R.layout.upgrade_dialog); //设置自定义的布局内容
        //获取到自定义的控件,设置相关属性和监听事件等。	
        final TextView curVersion = (TextView)window.findViewById(R.id.cur_version);
        curVersion.setText(AppUtils.getVersionString(getApplicationContext()));
        final TextView newVersion = (TextView)window.findViewById(R.id.new_version);
        newVersion.setText(info.get("version"));


2.然后设置样式

<!-- 自定义dialog -->
   <style name="custom_dialog" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>

 

3.这个dialog里面显示的内容完全是自定义的布局里面的东西,所以就自己去定义吧。

4.在需要showDialog的地方,调用这个showUpdateDialog()方法就好了。

有任何问题欢迎留言,一起交流学习。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值