您的位置:首页 > 移动开发 > Android开发

android中使用PopupWindow实现取消确定对话框

2016-09-28 15:11 549 查看
需求背景:app退出登录时,弹出取消确定对话框。

个人感觉使用AlertDialog,需要修改系统自带的样式,比较麻烦,所以这里就用PopupWindow来实现这一需求。

这里先展示一下最终界面:



实现代码如下:

一、对话框xml代码(dialog_login_out.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_dialog_login_out"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#66000000">

<LinearLayout
android:id="@+id/ll_popup_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_white1"
android:orientation="vertical"
android:layout_centerInParent="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:orientation="vertical"
android:background="@drawable/border_bottom_gray">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提示"
android:layout_gravity="center_horizontal"
android:padding="2dp"
android:textColor="#000000"
android:textSize="12sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="是否确定退出登录"
android:textColor="#000000"
android:layout_gravity="center_horizontal"
android:textSize="10sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/bt_cancel"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="取消"
android:textSize="13sp"
android:textColor="#027bff"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:background="@drawable/border_right"/>
<Button
android:id="@+id/bt_ok"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="确定"
android:textSize="13sp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:textColor="#027bff"
android:background="@null"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>


二、java代码(UserCenterActivity.java):

....
private PopupWindow mPopWindow;
....
//退出
private void loginOut(){
//获取自定义view
View mDialogView = LayoutInflater.from(this).inflate(R.layout.dialog_login_out, null);
mPopWindow = new PopupWindow(mDialogView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, true);
mPopWindow.setOutsideTouchable(false);
//显示PopupWindow
View rootview = LayoutInflater.from(this).inflate(R.layout.activity_usercenter, null);
mPopWindow.showAtLocation(rootview, Gravity.CENTER, 0, 0);

//拦截点击事件,防止传到下一层
RelativeLayout rl_dialog_login_out=(RelativeLayout)mDialogView.findViewById(R.id.rl_dialog_login_out);
rl_dialog_login_out.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});

//取消按钮
Button bt_cancel=(Button)mDialogView.findViewById(R.id.bt_cancel);
bt_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopWindow.dismiss();
}
});

//确定退出
Button bt_ok=(Button)mDialogView.findViewById(R.id.bt_ok);
bt_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//.....do something
}
});
}


ok,结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐