效果图:
自定义圆角布局样式:
drawable/bg_dialog_transfer
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="10dp" />
</shape>
主布局的引用
R.layout.dialog_transfer
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="60dp"
android:background="@drawable/bg_dialog_transfer"
android:paddingBottom="20dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingVertical="14dp"
android:text="转移确认"
android:textStyle="bold"
android:textColor="@color/color_0B0B0B"
android:textSize="14sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/divide_line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divide_color"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="18dp"
android:paddingTop="20dp"
android:text="品牌卡余额转移目前只支持单向,转移成功后不可转回原品牌卡。"
android:textColor="@color/color_0B0B0B"
android:textSize="12sp"
app:layout_constraintTop_toBottomOf="@id/divide_line" />
<TextView
android:id="@+id/tv_cancle"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:background="@drawable/bg_cancel"
android:gravity="center"
android:paddingHorizontal="20dp"
android:text="取消"
android:textColor="#8E8E8E"
android:textSize="@dimen/sp_12"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv_sure"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
<TextView
android:id="@+id/tv_sure"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginTop="30dp"
android:background="@drawable/applyagent_selector"
android:gravity="center"
android:text="确认转移"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constraintLeft_toRightOf="@id/tv_cancle"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_content" />
</android.support.constraint.ConstraintLayout>
在代码中调用:
private void showDialog(){
if(dialogTransfer == null){
dialogTransfer = new Dialog(this);
}
View view = LayoutInflater.from(this).inflate(R.layout.dialog_transfer, null);
TextView title = view.findViewById(R.id.tv_title);
TextView content = view.findViewById(R.id.tv_content);
TextView sure = view.findViewById(R.id.tv_sure);
TextView cancle = view.findViewById(R.id.tv_cancle);
title.setText("转移确认");
content.setText("品牌卡余额转移目前只支持单向,转移成功后不可转回原品牌卡。");
sure.setText("确认转移");
sure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogTransfer.dismiss();
}
});
cancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogTransfer.dismiss();
}
});
dialogTransfer.setCanceledOnTouchOutside(false);//设置点击透明背景不取消
dialogTransfer.setContentView(view);
dialogTransfer.show();
Window window = dialogTransfer.getWindow();
WindowManager windowManager = getWindowManager();
Display d = windowManager.getDefaultDisplay(); // 获取屏幕宽、高度
WindowManager.LayoutParams attributes = window.getAttributes();
Point point = new Point();
d.getSize(point);// 获取屏幕宽、高度到point中
attributes.width = (int) (point.x * 0.65);//设置宽度占屏幕宽度的0.65倍
window.setAttributes(attributes);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}
注意:必须在调用show()方法之后再设置Dialog的宽度、高度才有效!!!
设置圆角时,必须设置window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
https://www.jianshu.com/p/03d0f85b6f18