前言
自定义对话框
一、对话框
1、自定义dialog样式
1、dialog_delect.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:orientation="vertical">
<Button
android:id="@+id/tv_delect"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@drawable/shape_dialog"
android:text="delete files"
android:textColor="#ff0000" />
<Button
android:id="@+id/tv_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_dialog" //边框样式
android:gravity="center"
android:text="cancel"
android:textStyle="bold" /> //字体加粗
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
2、shape_dialog.xml
<!-- rectangle: 矩形、圆角矩形、弧形等
oval: 圆、椭圆
line: 线、实线、虚线
ring: 环形 -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="12dp"/>
<solid android:color="@android:color/white"/>
</shape>
3、styles.xml
<!--对话框样式-->
<style name="DelectDialog" parent="Theme.AppCompat.Dialog">
<!--宽度与屏幕比例-->
<item name="windowMinWidthMinor">90%</item>
<!--背景颜色为透明,默认白色-->
<item name="android:colorBackground">@color/transparent</item>
<!--浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--设定背景透明-->
<item name="android:windowIsTranslucent">true</item>
<!-- 是否有覆盖 -->
<item name="android:windowContentOverlay">@null</item>
</style>
2、使用显示对话框的方法
private void showDialog(){
// 底部弹出的列表组件
AlertDialog.Builder builder = new AlertDialog.Builder(getContext(), R.style.DelectDialog);
// 创建弹出的界面组件
View inflate = LayoutInflater.from(getContext()).inflate(R.layout.dialog_delect,null,false);
builder.setView(inflate);
final AlertDialog dialog = builder.create();
// 显示
dialog.show();
// 设置自身在底部弹出
Window window = dialog.getWindow();
window.setGravity(Gravity.BOTTOM);
// 设置view的宽度
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(params);
//---------------------------------------------------
// 自定义点击事件
// 获取删除按钮
Button deleBtn = inflate.findViewById(R.id.tv_delect);
// 获取取消按钮
Button cancelBtn = inflate.findViewById(R.id.tv_cancel);
// 删除按钮点击事件
deleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {... }
});
// 取消按钮点击事件
cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { ... }
});
}