Android实践-自定义dialog从屏幕底部弹出并且充满屏幕宽度

原创 2015年07月06日 22:57:06

通常我们使用dialog的时候会遇到一些问题,比如我想用自己定义的布局来替代系统那个黑乎乎的布局时我要怎么做?我想要指定dialog从底部弹出而不是在屏幕中央弹出要怎么做?我设置了dialog布局的宽度为填充父窗体然而实际效果却不是充满全屏的,这时我该怎么做?

我们先来看一个例子:


首先我们先来定义一个dialog的布局

<?xml version="1.0" encoding="utf-8"?>

    
    

activity_main.xml非常简单,只有一个button




接着我们要在res/values/styles.xml下定义dialog的样式以及dialog弹出时的动画


    
接着我们在res下新建一个anim文件夹,在res/values/anim下新建两个xml文件


dialog_enter.xml和dialog_exit.xml如下

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>

最后是MainActivity.java

public class MainActivity extends Activity {
    private Button btShare;
    private Context mContext;
    private Button btWeixin;
    private Button btWeibo;
    private Button btPengyouquan;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = MainActivity.this;
        btShare = (Button) findViewById(R.id.share);
        btShare.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final Dialog dialog = new Dialog(mContext, R.style.Theme_Light_Dialog);
                View dialogView = LayoutInflater.from(mContext).inflate(R.layout.my_dialog,null);
                //获得dialog的window窗口
                Window window = dialog.getWindow();
                //设置dialog在屏幕底部
                window.setGravity(Gravity.BOTTOM);
                //设置dialog弹出时的动画效果,从屏幕底部向上弹出
                window.setWindowAnimations(R.style.dialogStyle);
                window.getDecorView().setPadding(0, 0, 0, 0);
                //获得window窗口的属性
                android.view.WindowManager.LayoutParams lp = window.getAttributes();
                //设置窗口宽度为充满全屏
                lp.width = WindowManager.LayoutParams.MATCH_PARENT;
                //设置窗口高度为包裹内容
                lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
                //将设置好的属性set回去
                window.setAttributes(lp);
                //将自定义布局加载到dialog上
                dialog.setContentView(dialogView);
                btWeixin = (Button) dialogView.findViewById(R.id.bt_weixin);
                btWeibo = (Button) dialogView.findViewById(R.id.bt_weibo);
                btPengyouquan = (Button) dialogView.findViewById(R.id.bt_pengyouquan);
                dialog.show();
                btWeixin.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(mContext,"分享到微信",Toast.LENGTH_SHORT).show();
                    }
                });
                btWeibo.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(mContext,"分享到微博",Toast.LENGTH_SHORT).show();
                    }
                });
                btPengyouquan.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(mContext,"分享到朋友圈",Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });

    }


}


版权声明:欢迎转载,转载请注明出处http://blog.csdn.net/nugongahou110

自定义dialog宽度全屏

AlertDialog.Builder dialog = new AlertDialog.Builder(UnbindBankCardActivity.this, R.style.Dialog_FS)...
  • yshr1991
  • yshr1991
  • 2016年08月29日 15:55
  • 1855

Android实现从底部弹出的Dialog(一)

一.概述先给大家看一下效果图:点击中间的显示弹框按钮,从底部弹出来一个对话框,用户可以点击拍照或者从相册选择进行相应的操作,下面看看怎么实现。二.代码实现主页面布局文件,很简单,一个按钮,响应点击事件...
  • Small_Lee
  • Small_Lee
  • 2016年01月28日 17:58
  • 21290

关于AlertDialog显示至屏幕底部及边框问题的显示问题

AlertDialog.Builder builder = new AlertDialog.Builder(context);        View view = addLayout(R.layou...
  • wugezi
  • wugezi
  • 2016年08月17日 16:37
  • 1570

安卓开发笔记 通过AlertDialog实现从底部弹出的菜单的代码编写

如图是我想要实现的从屏幕底部弹出的菜单 的效果。 下面开始进行代码的实现:主要是通过自定义AlertDialog实现: 一)菜单的布局xml ...
  • colin_phang
  • colin_phang
  • 2015年09月15日 22:18
  • 953

AlertDialog弹窗在屏幕底部

AlertDialog弹窗在屏幕底部
  • u011195535
  • u011195535
  • 2015年04月03日 08:58
  • 2309

android 设置AlertDialog样式,宽度为屏幕宽度

android 设置AlertDialog样式,宽度为屏幕宽度
  • bitian123
  • bitian123
  • 2016年07月21日 13:36
  • 3448

自定义Dialog动态设置全屏显示,背景透明度,背景黑暗度

前情提要: 我们在开发的过程中会用到很多的自定义控件,我们这一篇来讲自定义Dialog需要用到的一些东西 1.在设置这些属性的时候我们首先需要去获取到当前控件的参数值 WindowManager.La...
  • ch1406285246
  • ch1406285246
  • 2017年05月11日 11:56
  • 471

关于自定义dialog不能左右全屏的解决办法

先贴代码,马克留用,免得以后自己还要找.... dialog_xml:
  • qq_15075579
  • qq_15075579
  • 2016年02月22日 16:36
  • 1457

Android中让Dialog全屏

转自:http://blog.csdn.net/forlong401/article/details/7830865
  • gf771115
  • gf771115
  • 2014年10月29日 13:48
  • 14927

Android 实现屏幕底部弹出Dialog

Android 实现屏幕底部弹出Dialog 封装使用(本文作为开发中记录使用,请轻喷)日常开发中经常用到Dialog实现用户交互界面每次都要重写一个很麻烦(产品经理一言不合就要求弹窗)效果图 这个...
  • zhao_doubi
  • zhao_doubi
  • 2017年09月08日 15:09
  • 262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android实践-自定义dialog从屏幕底部弹出并且充满屏幕宽度
举报原因:
原因补充:

(最多只允许输入30个字)