Android里把Dialog设置为全屏的方法

 有的时候我们需要把Dialog设置为全屏,于是我们想到了如下的办法:

//设置成全屏LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);mDetailDialog.addContentView(detailView, p);

 实际情况是dialog根本不会全屏,我的实现步骤如下:

1、定义Dialog类

package com.nes.seilivetv.ui.dialog;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import com.nes.seilivetv.R;import androidx.annotation.NonNull;import androidx.annotation.Nullable;public class EpgDetailInforDialog extends Dialog {    private Context mContext;    public EpgDetailInforDialog(@NonNull Context context) {        super(context);        View inflate;        mContext = context;        inflate = LayoutInflater.from(context).inflate(R.layout.epg_detail_info, null);        setContentView(inflate);    }    public EpgDetailInforDialog(@NonNull Context context, int themeResId) {        super(context, themeResId);        View inflate;        mContext = context;        inflate = LayoutInflater.from(context).inflate(R.layout.epg_detail_info, null);        setContentView(inflate);    }    protected EpgDetailInforDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {        super(context, cancelable, cancelListener);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    public void setDialogLocation() {        Window win = this.getWindow();        WindowManager.LayoutParams lp = win.getAttributes();        lp.gravity = Gravity.END;        lp.width = WindowManager.LayoutParams.MATCH_PARENT;        lp.height = WindowManager.LayoutParams.MATCH_PARENT;        win.setWindowAnimations(R.style.dialogWindowAnim);        win.setAttributes(lp);    }}

2、创建全屏Dialog

EpgDetailInforDialog epgDetailInforDialog = new EpgDetailInforDialog(getContext(), R.style.dialog_sen5_full);        epgDetailInforDialog.setDialogLocation();        epgDetailInforDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {            @Override            public void onDismiss(DialogInterface dialogInterface) {                Log.d("wujiang", "call epgDetailInforDialog dismiss");            }        });        epgDetailInforDialog.show();

注意: 一定要设置Dialog的theme,不然还真的不能全屏,它会是一个很大的Dialog。

3、在style.xml里增加如下的style

    

4、设置动画

我这里使用的是dialogWindowAnim,定义如下:

    

side_panel_in和side_panel_out子anim文件夹下。

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

 

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

                                                                                  THE         END

更多相关文章

  1. 2011.09.26(5)——— android sample之Notepad(TitleEditor)
  2. android 显示特殊符号
  3. android之HttpURLConnection
  4. 【Android代码片段之四】设置全屏
  5. Android继承AppCompatActivity设置全屏无标题
  6. android中自己画一个按钮,和自己设置一个框框
  7. [android]Framework新增系统服务
  8. 2011.09.07(2)——— android 跨进程通信之隐式intent
  9. Android自定义ViewGroup(自定义LayoutParams)

随机推荐

  1. Android支持RTL(从右向左)语言
  2. Android腾讯微薄客户端开发九:博主详情界
  3. android中google“定位查询”编辑
  4. 【Android(安卓)Developers Training】 1
  5. 一起学android之如何获取网络类型并判断
  6. MTK Android(安卓)Driver知识大全
  7. 我的第一个 Mono for Android(安卓)应用
  8. Android(安卓)Camera(五)
  9. 安卓开发环境AS2.0搭建
  10. android adb shell 笔记