6

Im avoir quelques problèmes dans show DialogFragment en plein écran. Dans mon application, j'ai un fragment que lorsque vous cliquez sur un bouton, il appelle un DialogFragment. Mais le DialogFragment remplit juste la zone du Fragment (sous la barre d'action). Je voudrais qu'il remplisse tout l'écran comme ça: http://img845.imageshack.us/img845/8682/myimage2.pngPlein écran DialogFragment (sur ActionBar) dans Android

Une aide?

 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; 
      } 
      }  
+0

Je ne sais pas si je comprends ce que vous voulez, mais si vous voulez un "plein écran" Fragment, pourquoi utiliser un DialogFragment? Utilisez un fragment normal à la place. – TomTasche

+0

C'est parce que je veux le montrer comme un popup/dialogue, montrant ce qu'il y a dans son dos, quelque chose comme ça: http://i.stack.imgur.com/uV5Jd.png. Mais le DialogFragment ne couvre pas la barre d'action –

+0

Alors ... Vous ne voulez pas un dialogue * fullscreen *, mais un dialogue qui couvre partiellement votre ActionBar, non? – TomTasche

Répondre

3

Ainsi, la recherche après beaucoup, je ne trouve pas de toute façon de faire la DialogFragment recouvre la actionbar en utilisant l'API 5. Mais je trouve une autre façon de faire faire le Fragment appelant une nouvelle activité sur l'écran avec le thème d'un dialogue. Cette solution me aide beaucoup, donc, im partager ici: https://stackoverflow.com/a/12275009/2327056

@StrikeForceZero en utilisant l'idée d'un poste de groupe google, j'ai pu retirer coiffer une activité. vous voudriez modifier la hauteur et la largeur à une taille "dynamique" de votre choix de préférence. Ensuite, réglez tout boutons ActionBar vous souhaitez

<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); 
} 
+1

mettre cela dans 'DialogFragment' ' public void onCreate (Bundle savedInstanceState) { \t \t super.onCrée (savedInstanceState); \t \t this.setStyle (STYLE_NO_FRAME, android.R.style.Theme_Wallpaper); \t} \t ' – CarlCarrots

1

La meilleure façon que je trouve

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen); 
     dialog.setContentView(R.layout.frame_help); 
     dialog.show(); 
0

Vous pouvez marquer vous dialogue fragmet utiliser dialogue au lieu de fragments incorporés lors de l'appel de #show.

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

Cela va créer une boîte de dialogue qui superposer au-dessus de actionbar et barre d'état (que vous pouvez ajouter manuellement revenir si vous le souhaitez).

Questions connexes