[关闭]
@Tyhj 2017-04-18T16:49:33.000000Z 字数 1553 阅读 1506

自定义Dialog

Android


原文:https://www.zybuluo.com/Tyhj/note/726850

弹出框是经常要用到的功能,系统的有点僵硬,自定义界面其实也很僵硬,只能只能定义长方形的dialog,不能定义一些特殊形状,所以自定义style就是关键了;

  1. <style name="dialog" parent="@android:style/Theme.Dialog">
  2. <item name="android:windowFrame">@null</item>
  3. <item name="android:windowIsFloating">true</item>
  4. <item name="android:windowIsTranslucent">true</item>
  5. <item name="android:windowNoTitle">true</item>
  6. <item name="android:background">@android:color/transparent</item>
  7. <item name="android:windowBackground">@android:color/transparent</item>
  8. <item name="android:backgroundDimEnabled">true</item>
  9. <item name="android:backgroundDimAmount">0.6</item>
  10. </style>

自定义一个类:

  1. package myView;
  2. import android.app.Dialog;
  3. import android.content.Context;
  4. import android.view.Gravity;
  5. import android.view.View;
  6. import android.view.Window;
  7. import android.view.WindowManager;
  8. public class MyDialog extends Dialog {
  9. private static int default_width = 160; //默认宽度
  10. private static int default_height = 120;//默认高度
  11. public MyDialog(Context context, View layout, int style) {
  12. this(context, default_width, default_height, layout, style);
  13. }
  14. public MyDialog(Context context, int width, int height, View layout, int style) {
  15. super(context, style);
  16. setContentView(layout);
  17. Window window = getWindow();
  18. WindowManager.LayoutParams params = window.getAttributes();
  19. params.gravity = Gravity.CENTER;
  20. window.setAttributes(params);
  21. }
  22. }

然后在Activity中使用

  1. final MyDialog dialog = new MyDialog(this, layout, R.style.dialog);
  2. dialog.setCancelable(true);
  3. dialog.show();

这样就可以自定义出各种形状的dialog了
如果想要没有那个默认的边距,就要layout_width就应该为match_parent,其实这样也不行,最简单的方法是设置父布局布局方向为横向,然后给至少一个子控件设置weight,就可以了。

  1. android:orientation="horizontal"
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注