6

全画面表示で DialogFragment を表示する際に問題が発生しています。私のアプリケーションでは、いくつかのボタンをクリックするとDialogFragmentを呼び出すフラグメントがあります。ただし、DialogFragment は Fragment の領域 (アクション バーの下) を埋めるだけです。次のようにすべての画面を埋めたいと思います: http://img845.imageshack.us/img845/8682/myimage2.png

何か助けはありますか?

     public class ItensActivity extends Fragment {
             ... 
            public void openDialogItens()
            {       
                dialog = new ItemDialog();      
                dialog.show(getFragmentManager(), "");
                getFragmentManager().executePendingTransactions();  

            }

            public static class ItemDialog extends DialogFragment
                {


                   @SuppressWarnings("deprecation")
                   @Override
                   public Dialog onCreateDialog(Bundle savedInstanceState) {
                      AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());        
                      builder.setView(getContentView());
                      Dialog dialog = builder.create();
                      dialog.setCanceledOnTouchOutside(true);
                      WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
                      lp.copyFrom(dialog.getWindow().getAttributes());
                      lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
                      lp.height = WindowManager.LayoutParams.FILL_PARENT;
                      dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
                      dialog.getWindow().setAttributes(lp);   
                      return dialog;
                  }

            private View getContentView() {
                   LayoutInflater inflater = getActivity().getLayoutInflater();
                   View view = inflater.inflate(R.layout.popup_item, null);
                   return view;
            }
            }    
4

3 に答える 3

3

そのため、多くの検索を行った後、API 5 を使用して DialogFragment をアクションバーにオーバーレイする方法が見つかりませんでした。このソリューションは私を大いに助けてくれるので、ここで共有しています: https://stackoverflow.com/a/12275009/2327056

@StrikeForceZero は、Google グループの投稿からのアイデアを使用して、アクティビティのスタイルを設定することができました。高さと幅を、できれば選択した「動的」サイズに変更することをお勧めします。次に、必要な ActionBar ボタンを設定します

<style name="PopupTheme" parent="android:Theme.Holo.Light.Dialog">
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
    <item name="android:windowActionModeOverlay">true</item>
    <item name="android:windowIsTranslucent">true</item>
</style>

--

public static void showAsPopup(Activity activity) {
    //To show activity as dialog and dim the background, you need to declare android:theme="@style/PopupTheme" on for the chosen activity on the manifest
    activity.requestWindowFeature(Window.FEATURE_ACTION_BAR);
    activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
            WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    LayoutParams params = activity.getWindow().getAttributes(); 
    params.height = 850; //fixed height
    params.width = 850; //fixed width
    params.alpha = 1.0f;
    params.dimAmount = 0.5f;
    activity.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 
    setContentView(R.layout.activity_main);
}
于 2013-04-29T16:34:35.450 に答える
1

私が見つけた最も簡単な方法

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.frame_help);
        dialog.show();
于 2014-04-16T14:21:23.563 に答える
0

#show を呼び出すときに、埋め込まれたフラグメントの代わりにダイアログを使用するように、ダイアログ フラグメントにフラグを付けることができます。

myDialogFragment.show(getFragmentManager(), "dialog")

これにより、アクションバーとステータスバー (必要に応じて手動で追加できます) の上にオーバーレイするダイアログが作成されます。

于 2014-12-18T15:17:46.527 に答える