不用自定义dialog实现圆角,设置宽高,动画,位置等功能
1圆角
//设置dialog背景
android.view.Window window = dialog.getWindow();
window.setBackgroundDrawableResource(R.drawable.back);
R.drawable.back文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="9dp" />
<solid android:color="#00000000" />透明
</shape>
2设置宽高
//设置宽高
android.view.Window window = dialog.getWindow();
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); //为获取屏幕宽、高
android.view.WindowManager.LayoutParams p = dialog.getWindow().getAttributes(); //获取对话框当前的参数值
p.height = (int) (d.getHeight() * 0.2); //高度设置为屏幕的0.3
p.width = (int) (d.getWidth() - 300); //宽度设置为屏幕宽度-300
window.setAttributes(p);
完整代码(注释很详细)
private void showDialog() {
if (dialog == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(this); //先得到构造器
// 载入布局
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.dialog_cell, null);
builder.setView(layout);
// 对布局中的控件监听
TextView tvConfirm = (TextView) layout.findViewById(R.id.tv_confirm);
tvConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog = builder.create();
}
dialog.show();//先显示再设置参数
//设置dialog背景为透明,圆角
android.view.Window window = dialog.getWindow();
window.setBackgroundDrawableResource(R.drawable.back);
//设置Dialog的展示位置
window.setGravity(Gravity.BOTTOM);
//设置弹出动画
window.setWindowAnimations(R.style.dialogWindowAnim);
//设置alertDialog的宽高
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); //为获取屏幕宽、高
android.view.WindowManager.LayoutParams p = window.getAttributes(); //获取对话框当前的参数值
// p.height = (int) (d.getHeight() * 0.2); //高度设置为屏幕的0.3
p.width = (int) (d.getWidth() - 300); //宽度设置为屏幕宽度-300
p.y = 20;//设置Dialog距离底部的距离
window.setAttributes(p); //将属性设置给窗体
}
<style name="dialogWindowAnim" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/scale_dialog_enter</item>
<item name="android:windowExitAnimation">@anim/scale_dialog_out</item>
</style>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromYDelta="100%"
android:toYDelta="0" />
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromYDelta="0"
android:toYDelta="100%" />