1

我有一个带有圆角的自定义对话框视图。因此,我需要隐藏我成功使用的默认对话框边框,getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));。

我的问题是对话框现在扩展了整个父宽度,我只希望它像普通对话框窗口一样显示大约 90% 的宽度。我尝试设置 getWindow().setLayout(...) 并设置布局参数属性但无济于事。任何帮助深表感谢。

*更新。删除 getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0)); 从我的代码中修复了宽度问题,但让我回到了默认对话框边框显示的问题。虽然因为我的自定义对话框没有边框和圆角,但我需要该边框消失而不会像大多数对话框一样丢失 90% 或任何对话框宽度。

public final class ResetPasswordDialogFragment extends DialogFragment {

  public static ResetPasswordDialogFragment newInstance() {
    ResetPasswordDialogFragment f = new ResetPasswordDialogFragment();

    Bundle args = new Bundle();
    f.setArguments(args);

    return f;
   }

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dialog_fragment_password_reminder, container, false);

    //Removes the default dialog background border
    getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));

    Button resetBtn = (Button)v.findViewById(R.id.resetPasswordBtn);
    Button closeBtn = (Button)v.findViewById(R.id.closeBtn);

    //Click Listeners
    resetBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            //TODO web call here
        }
    });
    closeBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
           dismiss();
        }
    });

    return v;
  }
}
4

1 回答 1

0

这可能不是您的最佳解决方案或在您的示例代码中为您提供帮助,但我要做的是在您的活动或任何触发这样的对话框的事件中创建自定义对话框:

          dialog = new Dialog(getActivity(),R.style.Theme_CustomDialog);
          dialog.setContentView(R.layout.custom_dialog);
          dialog.show();

如果您想删除边框,请在您的 Theme_Custom 对话框中给出

       <item name="android:windowNoTitle">true</item>

然后在您的 custom_dialog xml 文件中给出一个线性/相对布局,其中包含您要传递的参数和您希望自定义对话框具有的视图

或者,您可以在这里查看:http ://android-developers.blogspot.com/2012/05/using-dialogfragments.html和http://android-er.blogspot.com/2012/01/dialogfragment.html

于 2012-08-16T20:56:30.330 回答