@Tyhj
        
        2017-04-18T08:49:33.000000Z
        字数 1553
        阅读 1770
    Android
原文:https://www.zybuluo.com/Tyhj/note/726850
弹出框是经常要用到的功能,系统的有点僵硬,自定义界面其实也很僵硬,只能只能定义长方形的dialog,不能定义一些特殊形状,所以自定义style就是关键了;
<style name="dialog" parent="@android:style/Theme.Dialog"><item name="android:windowFrame">@null</item><item name="android:windowIsFloating">true</item><item name="android:windowIsTranslucent">true</item><item name="android:windowNoTitle">true</item><item name="android:background">@android:color/transparent</item><item name="android:windowBackground">@android:color/transparent</item><item name="android:backgroundDimEnabled">true</item><item name="android:backgroundDimAmount">0.6</item></style>
自定义一个类:
package myView;import android.app.Dialog;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.Window;import android.view.WindowManager;public class MyDialog extends Dialog {private static int default_width = 160; //默认宽度private static int default_height = 120;//默认高度public MyDialog(Context context, View layout, int style) {this(context, default_width, default_height, layout, style);}public MyDialog(Context context, int width, int height, View layout, int style) {super(context, style);setContentView(layout);Window window = getWindow();WindowManager.LayoutParams params = window.getAttributes();params.gravity = Gravity.CENTER;window.setAttributes(params);}}
然后在Activity中使用
final MyDialog dialog = new MyDialog(this, layout, R.style.dialog);dialog.setCancelable(true);dialog.show();
这样就可以自定义出各种形状的dialog了 
如果想要没有那个默认的边距,就要layout_width就应该为match_parent,其实这样也不行,最简单的方法是设置父布局布局方向为横向,然后给至少一个子控件设置weight,就可以了。
android:orientation="horizontal"
