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

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

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

我们先来看一个例子:


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



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



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


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


dialog_enter.xml和dialog_exit.xml如下



    


    

最后是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

相关文章推荐

Android Dialog无法填满屏幕宽度问题解决

就是将上面的自定义布局放到一个Dialog里面,布局xml

自定义dialog宽度全屏

AlertDialog.Builder dialog = new AlertDialog.Builder(UnbindBankCardActivity.this, R.style.Dialog_FS)...

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

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

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

一.概述和Android实现从底部弹出的Dialog(一)一样,我们先上效果图:点击中间的弹出对话框按钮,从底部弹出Dialog,我们可以选择拍照,选择相片,以及取消按钮二.代码实现主页面布局:...

AlertDialog弹窗在屏幕底部

AlertDialog弹窗在屏幕底部

android 如何让自定义dialog的宽度充满整个屏幕

一、第一种方法 在自定义的dial

android dialog宽度无法填满屏幕解决方案

转至:http://bbs.csdn.net/topics/390175091/ 解决方案: Window win = dialog.getWindow(); ...

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

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

自定义dialog的宽度充满整个屏幕宽度的问题

最近在实现一个自定义dialog的时候,效果要求自定义dialog的宽度必须跟手机屏幕的宽度一样宽。自定义dialog:public class CustomDialog extends Dialog...

Android 弹出对话框Dialog充满屏幕宽度

项目有时候会用到Dialog充满屏幕有宽度,大多数是从底部显示出来。如下: final View view = LayoutInflater.from(context).inflate(layo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android实践-自定义dialog从屏幕底部弹出并且充满屏幕宽度
举报原因:
原因补充:

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