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

来源:互联网 发布:java 数组接收 split 编辑:程序博客网 时间:2024/06/07 00:15

需求背景: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,结束。



0 0
原创粉丝点击