0

プログラムで単純なプロンプト ダイアログ フラグメントを表示しようとしています。を拡張し、カスタム実装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

前もって感謝します。

4

1 に答える 1

1

余白を最小の辺の半分にしているように見えます。これにより、縦向きモードでは余白が画面全体になります。私はマージンを減らすことから始めます。

setLayoutParams()メソッドを使用して、マージンをEditTextに直接適用できます。これにより、FrameLayoutが削除されます。

于 2012-10-08T17:07:44.150 に答える