EditText未显示在自定义FragmentDialog中

时间:2012-10-08 16:42:51

标签: android android-layout dialog android-fragments

我正在尝试以编程方式显示一个简单的提示对话框片段。我已对SherlockFragmentActivity进行了扩展,并在其中编写了自定义SherlockDialogFragment实现。

(我正在使用ActionbarSherlock库,但我认为问题与它没有关系,并且也会使用常规的ActionBar和Fragments来观察。)

这是自定义FragmentActivity类中的覆盖oncreateDialog方法:

    @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();            
    }

当我显示片段时,内部framelayout未显示(看起来像一个不可见的矩形,随着每个键入的字符在高度上增长)。我不确定我在这里做错了什么,但肯定有些错误,因为如果我把编辑文本放在setView中,一切正常(但没有边际​​)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

看起来你正在使边距是最小边的一半,在纵向模式下会使你的边距成为整个屏幕。我会从减少利润开始。

您可以使用setLayoutParams()方法将边距直接应用于EditText。这将消除FrameLayout。