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