我正在尝试以编程方式显示一个简单的提示对话框片段。我已经扩展SherlockFragmentActivity
,并在其中编写了自定义SherlockDialogFragment
实现。
(我正在使用 ActionbarSherlock 库,但我认为问题与它无关,并且使用常规的 ActionBar 和 Fragments 也可以观察到)。
这是oncreateDialog
自定义 FragmentActivity 类中的重写方法:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
//Skipped section. Setting positive, negative buttons, title, message on builder.
efPsw = new EditText(getActivity());
// Hacky margin stuff (yeah, I know it's dirty)
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int smallestSide = Math.min(displaymetrics.heightPixels, displaymetrics.widthPixels);
int margin = (int)(0.5 * ((double) smallestSide));
efPsw.setTransformationMethod(PasswordTransformationMethod.getInstance());
FrameLayout fl = new FrameLayout(getActivity());
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(margin, 0, margin, 0);
fl.addView(efPsw, layoutParams);
builder.setView(fl);
return builder.create();
}
当我显示片段时,内部框架布局没有显示(看起来像一个不可见的矩形,随着每个键入的字符的高度增加)。我不确定我在这里做错了什么,但肯定有问题,因为如果我将编辑文本放入setView
一切正常(但没有边距)。
提前致谢。