Dialog对话框,超简单自定义用法

1,效果图


2,xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
    android:background="@drawable/bg_default_shap"
    >
    <TextView
        android:id="@+id/tv_dialog_title"
        android:gravity="center"
        android:text="修改昵称"
        android:padding="10dp"
        android:textSize="30sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText
        android:id="@+id/et_dialog_input"
        android:layout_margin="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入昵称"
        android:padding="20dp"
        android:background="@drawable/bg_default_shap"
        />
    <View
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/halfDark"
        />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/tv_dialog_no"
            android:padding="20dp"
            android:gravity="center"
            android:text="取消"
            android:textSize="30sp"
            android:textColor="@color/colorPrimary"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <View

            android:layout_width="2dp"
            android:layout_height="match_parent"
            android:background="@color/halfDark"
            />
        <TextView
            android:id="@+id/tv_dialog_yes"
            android:padding="20dp"
            android:text="确定"
            android:textSize="30sp"
            android:textColor="@color/colorPrimary"
            android:gravity="center"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
    </LinearLayout>

</LinearLayout>

3,代码

private void showDialog() {
        // 点击弹框修改昵称
        final AlertDialog.Builder builder=new AlertDialog.Builder(EditUserActivity.this);
        // 取消抬头信息
        final View dialogView = mInflater.inflate(R.layout.setting_dialog, null);
        builder.setView(dialogView);
        final AlertDialog dialog = builder.show();
        dialogView.findViewById(R.id.tv_dialog_yes).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText et_dialog_input = (EditText) dialogView.findViewById(R.id.et_dialog_input);
                String nickName = et_dialog_input.getText().toString().trim();
                if(TextUtils.isEmpty(nickName)){
                    ToastUtils.show("请输入昵称");
                    return;
                }
                ToastUtils.show("昵称修改成功");
                mSu_setting_user_name.showName(nickName);
                //  修改本地sp中的数据
                SharedPreferencesUtils.saveString(EditUserActivity.this,Contants.SP_LOGIN_NAME,nickName);
                //  修改数据库中的数据
                mUser.setUsername(nickName);
                mUserDao.insertOrReplace(mUser);
                dialog.dismiss();

            }
        });
        dialogView.findViewById(R.id.tv_dialog_no).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });


    }


如果需要自定义Dialog 的尺寸和位置:

//  点击弹出一个对话框   对话框里设置日历格式的选择器  这里用 NumberPickerView
        AlertDialog dialog=new AlertDialog.Builder(AddTesterActivity.this).create();
        View heightView = mInflater.inflate(R.layout.layout_height, null);
        dialog.setView(heightView,0,0,0,0);
        dialog.show();//一定要先show出来再设置dialog的参数,不然就不会改变dialog的大小了

        int width = getWindowManager().getDefaultDisplay().getWidth();//得到当前显示设备的宽度,单位是像素
        WindowManager.LayoutParams params = dialog.getWindow().getAttributes();//得到这个dialog界面的参数对象
        params.width = width/3;//设置dialog的界面宽度
        params.height =  WindowManager.LayoutParams.WRAP_CONTENT;//设置dialog高度为包裹内容
        params.gravity = Gravity.CENTER;//设置dialog的重心

        dialog.getWindow().setAttributes(params);//最后把这个参数对象设置进去,即与dialog绑定

        //  获取dialog里面的View的属性
        NumberPicker picker_height = (NumberPicker) heightView.findViewById(R.id.picker_height);
        picker_height.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                mTvTesterHeightSelector.setText(newVal+" cm");
            }
        });


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值