android自定义Dialog

来源:互联网 发布:网络高科技犯罪电视剧 编辑:程序博客网 时间:2024/05/21 19:41

1 首先继承Dialog

2 构造方法 引用style   (在style里可以设置弹窗背景)

3. 可以自定义大小主要代码:

   

super(context, R.style.dialog);
   style:
<style name="dialog" parent="@android:style/Theme.Dialog">    //Dialog的windowFrame框为无    <item name="android:windowFrame">@null</item>    //是否浮现在activity之上    <item name="android:windowIsFloating">true</item>    //是否半透明    <item name="android:windowIsTranslucent">true</item>    //是否显示title    <item name="android:windowNoTitle">true</item>    //设置dialog的背景    <item name="android:background">@drawable/circle_rec</item>    //显示区域背景是否透明    <item name="android:windowBackground">@android:color/transparent</item>    //就是用来控制灰度的值,当为1时,界面除了我们的dialog内容是高亮显示的,dialog以外的区域是黑色的,
    //完全看不到其他内容,系统的默认值是0.5    <item name="android:backgroundDimAmount">0.7</item>    //显示区域以外是否使用黑色半透明背景    <item name="android:backgroundDimEnabled">true</item></style>
  
 设置弹窗大小(需在setContentView之后):
    
    protected  void setWindowLayout(int width){        WindowManager.LayoutParams param=window.getAttributes();        param.width= PxUtils.dpToPx(width, context);//        param.height= PxUtils.dpToPx(height,context);        window.setAttributes(param);    }
    弹窗宽高一致:
    v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), 
          View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    setWindowLayout(v.getMeasuredWidth() * 2, v.getMeasuredHeight());

    

原创粉丝点击