@Tyhj
2017-04-18T16:49:33.000000Z
字数 1553
阅读 1489
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"