6

Im avendo alcuni problemi in mostra DialogFragment a schermo intero. Nella mia applicazione, ho un frammento che quando fai clic su un pulsante chiama un DialogFragment. Ma il DialogFragment riempie semplicemente l'area del Frammento (sotto la barra delle azioni). Mi piacerebbe che riempia tutto lo schermo del genere: http://img845.imageshack.us/img845/8682/myimage2.pngDialogFragment schermo intero (su ActionBar) in Android

Qualsiasi aiuto?

 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

Non sono sicuro di aver capito cosa vuoi, ma se vuoi un frammento "a schermo intero", perché dovresti usare un DialogFragment? Usa invece un frammento normale. – TomTasche

+0

È perché voglio mostrarlo come un popup/finestra di dialogo, mostrando cosa c'è dietro, qualcosa del genere: http://i.stack.imgur.com/uV5Jd.png. Ma il DialogFragment non copre la barra delle azioni –

+0

Quindi ... Non vuoi una finestra * a schermo intero *, ma una finestra di dialogo che copre parzialmente il tuo ActionBar, giusto? – TomTasche

risposta

3

Così, dopo la ricerca molto, non ho trovato in ogni caso a fare il DialogFragment si sovrappone al ActionBar utilizzando API 5. Ma trovo un modo alternativo per farlo rendere il Frammento chiamare una nuova attività sullo schermo con il tema di un dialogo. Questa soluzione mi aiuta molto, quindi, im condivisione qui: https://stackoverflow.com/a/12275009/2327056

@StrikeForceZero utilizzando l'idea da un post gruppo Google sono stato in grado di tirare fuori styling un'attività. vorresti modificare l'altezza e la larghezza in preferibilmente con una dimensione "dinamica" a tua scelta. Quindi impostare qualunque pulsanti ActionBar volete

<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

metti questo in 'DialogFragment' ' public 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

Il modo più semplice che ho trovato

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

Puoi bandiera si finestra frammento da utilizzare al posto del dialogo frammenti incorporati quando si chiama #show.

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

Questo creerà una finestra di dialogo che si sovrapporre in cima ActionBar e barra di stato (che è possibile aggiungere manualmente indietro nel se lo si desidera).

Problemi correlati