6

Mam pewne problemy w programie Show DialogFragment na pełnym ekranie. W mojej aplikacji mam Fragment, który po kliknięciu w jakiś przycisk wywołuje DialogFragment. Ale DialogFragment wypełnia obszar Fragmentu (poniżej paska akcji). Chciałbym, żeby wypełnił cały ekran w ten sposób: http://img845.imageshack.us/img845/8682/myimage2.pngPełny ekran DialogFragment (w ActionBar) w systemie Android

Każda pomoc?

 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

Nie jestem pewien, czy rozumiem, co chcesz, ale jeśli chcesz fragmentu "pełnego ekranu", dlaczego chcesz użyć DialogFragment? Zamiast tego użyj normalnego fragmentu. – TomTasche

+0

To dlatego, że chcę pokazać to jak wyskakujące okienko/okno dialogowe, pokazujące, co jest z tyłu, coś takiego: http://i.stack.imgur.com/uV5Jd.png. Ale DialogFragment nie obejmuje paska akcji –

+0

A więc ... Nie chcesz * pełnego ekranu * Dialog, ale okna dialogowego, które częściowo pokrywa twój pasek akcji, prawda? – TomTasche

Odpowiedz

3

Tak, po szukać dużo, nie znalazłem w każdym razie, aby DialogFragment przykrywa actionbar użyciu API 5. Ale ja znaleźć alternatywny sposób to zrobić dzięki czemu Fragment nazywając nową aktywność na ekranie z motywem dialogu. Rozwiązanie to pomaga mi dużo, tak, dzieląc go im tutaj: https://stackoverflow.com/a/12275009/2327056

@StrikeForceZero używając pojęcia z grupy postu google udało mi się ściągnąć ją stylizacji aktywność. chciałbyś zmodyfikować wysokość i szerokość do preferowanego "dynamicznego" rozmiaru. Następnie ustaw cokolwiek przyciski ActionBar chcesz

<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

umieść to w 'DialogFragment' ' public void onCreate (Bundle savedInstanceState) { \t \t super.onCreate (savedInstanceState); \t this.setStyle (STYLE_NO_FRAME, android.R.style.Theme_Wallpaper); \t} \t ' – CarlCarrots

1

Najprostszym sposobem znalazłem

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

Można flaga ty fragmet dialogowe do korzystania Dialog zamiast osadzone fragmenty podczas wywoływania #show.

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

To stworzy okno, które będzie nakładany na szczycie actionbar i pasku stanu (który można ręcznie dodać z powrotem, jeśli chcesz).