一。AlertDialog弹窗
这里我写了一个button按钮,触发点击事件出现弹窗,也可以不用点击方法,自定义触发
<Button
android:id="@+id/btn_alert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="出现弹框"/>
AlertDialog alertDialog = new AlertDialog.Builder(Activity_alert.this)
//标题
.setTitle("title")
//内容
.setMessage("message")
//图标
.setIcon(R.mipmap.ic_launcher)
.setPositiveButton("确认", null)
.create();
alertDialog.show();
AlertDialog.Builder builder = new AlertDialog.Builder(Activity_alert.this);
//图标
builder.setIcon(R.mipmap.ic_launcher);
//标题
builder.setTitle("title");
//提示
builder.setMessage("message");
//按钮
builder.setPositiveButton("确认", null);
builder.setNegativeButton("取消", null);
builder.setNeutralButton("中性按钮", null);
builder.setCancelable(true);
AlertDialog dialog = builder.create();
dialog.show();
二。PopupWindow 弹窗
自定义xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@color/gray"
android:orientation="vertical">
<TextView
android:id="@+id/tv_alert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_alert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认" />
</LinearLayout>
</LinearLayout>
PopupWindow popupWindow = new PopupWindow();
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setContentView(View.inflate(Activity_alert.this, R.layout.ppwindow, null));
popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(false);
//动画样式
//popupWindow.setAnimationStyle(R.style.anim_menu_bottombar);
//设置位置
popupWindow.showAsDropDown(v, 0, 0);
左右平移
popupWindow.showAsDropDown(v, 100, 0);
三。Dialog自定义弹窗
创建xml页面自定义
这里创建text.xml
,根据自己的需要进行自定义即可
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/one_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是第一行"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是第二行"/>
</LinearLayout>
java文件进行调用
//设置弹框
Dialog dialog = new Dialog(getCurContext());
//加入自定义的布局
View view = View.inflate(getCurContext(), R.layout.goods_classify_window, null);
//获取自定义布局里面的内容,进行操作
TextView one_txt= view.findViewById(R.id.one_txt);
one_txt.setText("第一行被我改变了");
//加入自定义配置
dialog.setContentView(view);
//设置外部不可以被点击
dialog.setCancelable(false);
//显示弹框
dialog.show();
//操作位置宽高之类的
Window window = dialog.getWindow();
//设置弹出位置
window.setGravity(Gravity.CENTER);
//设置弹框大小
window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//设置透明度
window.setDimAmount(0.1f);
//因为设置外部不可以被点击,这里使用定时方法,让其定时消失
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
dialog.dismiss();
}
},3000);//单位为毫秒,所有三秒后弹框消失