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");
}
});