AlertDialog设置按钮居中

在项目中我们使用AlertDialog时,并不想在输入框内容为空点击确定dialog就消失了,我们可以这样写:

View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_layout,null);
oldEdit = view.findViewById(R.id.et_old);
newEdit = view.findViewById(R.id.et_new);
confirmEdit = view.findViewById(R.id.et_confirm);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext)
        .setView(view)
        .setPositiveButton("确定", null)     // 点击事件设置为null
        .setNegativeButton("取消", null);
dialog = builder.create();
dialog.setCancelable(false);                         
dialog.setCanceledOnTouchOutside(false);            
dialog.show();

Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
// 获取按钮,另设点击事件,点击按钮dialog不调用dismiss()就不会消失了
positiveButton.setOnClickListener(new View.OnClickListener() {  
    @Override
    public void onClick(View v) {
        originPsw = oldEdit.getText().toString().trim();
        newPsw = newEdit.getText().toString().trim();
        newPswAgain = confirmEdit.getText().toString().trim();
        if (TextUtils.isEmpty(originPsw)){
            Toast.makeText(TestActivity.this,"请输入原始密码",Toast.LENGTH_SHORT).show();
        }else if (TextUtils.isEmpty(newPsw)){
            Toast.makeText(TestActivity.this,"请输入新密码",Toast.LENGTH_SHORT).show();
        }else if (TextUtils.isEmpty(newPswAgain)){
            Toast.makeText(TestActivity.this,"请再次输入新密码",Toast.LENGTH_SHORT).show();
        }else if (!"123456".equals(originPsw)){
            Toast.makeText(TestActivity.this,"原始密码输入错误",Toast.LENGTH_SHORT).show();
        }else if (!newPsw.equals(newPswAgain)){
            Toast.makeText(TestActivity.this,"两次输入的新密码不一致",Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(TestActivity.this,"设置成功",Toast.LENGTH_SHORT).show();
        }
    }
});

Button negavieButton = dialog.getButton(AlertDialog.BUTTON_NEGATIVE);
negavieButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});

// 设置dialog按钮居中显示

LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) positiveButton.getLayoutParams();
layoutParams.weight = 10;
positiveButton.setLayoutParams(layoutParams);
negavieButton.setLayoutParams(layoutParams);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。你可以按照以下步骤实现在Preference中创建自定义AlertDialog: 1. 在Preference的setOnPreferenceClickListener点击事件中创建一个AlertDialog.Builder对象。 2. 使用LayoutInflater加载自定义Dialog布局文件。 3. 在自定义Dialog布局文件中添加两个TextView和四个RadioButton,以及取消和确定按钮。 4. 给每个RadioButton添加一个点击事件,以便用户可以选择他们需要的选项。 5. 在AlertDialog.Builder对象中设置自定义Dialog布局文件。 6. 给确定按钮添加点击事件,以便在用户点击确定按钮时执行相应的操作。 7. 给取消按钮添加点击事件,以便在用户点击取消按钮时关闭Dialog。 下面是一个简单的示例代码,可以帮助你更好地理解如何在Preference中创建自定义AlertDialog: ```java Preference preference = findPreference("preference_key"); preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.custom_dialog_layout, null); builder.setView(view); RadioButton radioButton1 = view.findViewById(R.id.radio_button1); RadioButton radioButton2 = view.findViewById(R.id.radio_button2); RadioButton radioButton3 = view.findViewById(R.id.radio_button3); RadioButton radioButton4 = view.findViewById(R.id.radio_button4); radioButton1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理单选按钮1被选中的事件 } }); radioButton2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理单选按钮2被选中的事件 } }); radioButton3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理单选按钮3被选中的事件 } }); radioButton4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理单选按钮4被选中的事件 } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 处理确定按钮被点击的事件 } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 处理取消按钮被点击的事件 dialog.cancel(); } }); AlertDialog alertDialog = builder.create(); alertDialog.show(); return true; } }); ``` 在这个示例代码中,我们首先获取了一个名为preference_key的Preference对象,并为其设置了一个setOnPreferenceClickListener点击事件。在点击事件中,我们创建了一个AlertDialog.Builder对象,并使用LayoutInflater加载了自定义Dialog布局文件。然后,我们为每个RadioButton添加了一个点击事件,以便用户可以选择他们需要的选项。在AlertDialog.Builder对象中,我们设置了自定义Dialog布局文件,并为确定按钮和取消按钮添加了点击事件。最后,我们创建了一个AlertDialog对象并显示了它。 希望这个示例代码能够帮助你实现在Preference中创建自定义AlertDialog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值