2012-10-11 63 views

Respuesta

5

El siguiente código Mono for Android C# hace el truco (pero debería ser fácil de portar a Java). Probé en Android 2.2 (Galaxy S) y Android 4.1 (Nexus 7). Lo único que tendría que cambiar son los ID de disposición utilizados para la vista principal y la vista de diálogo.

[Activity (MainLauncher = true)]    
public class TestCustomDialogActivity : FragmentActivity 
{ 
    public class MyDialogFragment : Android.Support.V4.App.DialogFragment 
    { 
     public override Android.Views.View OnCreateView(Android.Views.LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
     { 
      // Android 3.x+ still wants to show title: disable 
      Dialog.Window.RequestFeature(WindowFeatures.NoTitle); 

      // CHANGE TO YOUR DIALOG LAYOUT or VIEW CREATION CODE 
      return inflater.Inflate(Resource.Layout.MyLayout, container, true); 
     } 

     public override void OnResume() 
     { 
      // Auto size the dialog based on it's contents 
      Dialog.Window.SetLayout(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.WrapContent); 

      // Make sure there is no background behind our view 
      Dialog.Window.SetBackgroundDrawable(new ColorDrawable(Color.Transparent)); 

      // Disable standard dialog styling/frame/theme: our custom view should create full UI 
      SetStyle(Android.Support.V4.App.DialogFragment.StyleNoFrame, Android.Resource.Style.Theme); 

      base.OnResume(); 
     } 
    } 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // CHANGE TO YOUR MAIN SCREEN 
     SetContentView(Resource.Layout.MyDialog); 

     var dialog = new MyDialogFragment(); 
     dialog.Show(SupportFragmentManager, "dialog"); 
    }   
} 

he subido a Mono completo para Android muestra a https://github.com/t9mike/CustomDialogFragmentSample. a continuación

+0

Gracias. Una vez convertido a Java, este me fue el truco. Tuve que cambiar WRAP_CONTENT por MATCH_PARENT para que el cuadro de diálogo se muestre a pantalla completa. – speedynomads

+0

Gracias por subir Github – Signcodeindie

23

Código le ayudará a visualizar de diálogo de pantalla completa y también establecer el color transparente

Dialog dialog = new Dialog(this); 
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
// layout to display 
dialog.setContentView(R.layout.about_program_dialog_layout); 

// set color transpartent 
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

dialog.show(); 

about_program_dialog_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="#55000000" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="227dp" 
     android:text="Dismiss" /> 

    <TextView 
     android:id="@+id/autoCompleteTextView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/button1" 
     android:layout_alignParentRight="true" 
     android:layout_marginBottom="16dp" 
     android:layout_marginRight="63dp" 
     android:ems="10" 
     android:text="Hello There World" /> 

</RelativeLayout> 
+2

esto es un Diálogo, no un DialogFragment, como en la pregunta –

Cuestiones relacionadas