6

Ich habe einige Probleme in Show DialogFragment im Vollbildmodus. In meiner Anwendung habe ich ein Fragment, das beim Klicken auf eine Schaltfläche ein DialogFragment aufruft. Aber das DialogFragment füllt nur den Bereich des Fragments (unterhalb der Aktionsleiste). Ich möchte, dass es den ganzen Bildschirm so füllt: http://img845.imageshack.us/img845/8682/myimage2.pngVollbild DialogFragment (über ActionBar) in Android

Irgendwelche Hilfe? So

 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

Ich bin mir nicht sicher, ob ich verstehe, was Sie wollen, aber wenn Sie ein "Vollbild" -Fragment wollen, warum würden Sie ein DialogFragment verwenden? Verwenden Sie stattdessen ein normales Fragment. – TomTasche

+0

Es ist, weil ich es wie ein Popup/ein Dialogfeld zeigen möchte, was zeigt, was in seinem Rücken ist, etwas in der Art: http://i.stack.imgur.com/uV5Jd.png. Aber das DialogFragment deckt die Aktionsleiste nicht ab. –

+0

Also ... Sie wollen keinen * Fullscreen * -Dialog, sondern einen Dialog, der Ihre ActionBar teilweise abdeckt, oder? – TomTasche

Antwort

3

, Suche nach viel, ich habe sowieso nicht finden, um das DialogFragment zu machen überlagert die ActionBar API 5. Aber ich finde, eine alternative Art und Weise zu tun, dass macht das Fragment auf dem Bildschirm eine neue Aktivität Aufruf mit dem Thema eines Dialogs. Diese Lösung hilft mir viel, so, im hier teilen https://stackoverflow.com/a/12275009/2327056

@StrikeForceZero die Idee von einem Google-Gruppe Beitrag mit Ich konnte es auszuziehen eine Aktivität Styling. Sie möchten die Höhe und Breite auf eine "dynamische" Größe Ihrer Wahl vorzugsweise ändern. Dann setzen, was auch immer ActionBar Tasten Sie

<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> 

möchte -

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

setzen Sie dies in 'DialogFragment' ' öffentliche void onCreate (Bundle savedInstanceState) { \t \t super.onCreate (savedInstanceState); \t \t this.setStyle (STYLE_NO_FRAME, android.R.style.Theme_Wallpaper); \t} \t ' – CarlCarrots

1

Der einfachste Weg, fand ich

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

Sie können Flag Sie Dialog fragmet Dialog zu verwenden, statt eingebettete Fragmente beim Aufruf von #show.

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

Dies wird einen Dialog erstellen, die oben auf ActionBar und Statusleiste überlagern (die Sie manuell in wieder hinzufügen können, wenn Sie möchten).