2012-10-11 39 views
11

Tôi muốn có hộp thoại Android bằng cách sử dụng Phân đoạn được tùy chỉnh hoàn toàn: không có phần chủ đề của hộp thoại nền tảng nào được bao gồm. Ví dụ: một cái gì đó như thế này:Làm cách nào để tạo Hộp thoại tùy chỉnh 100%

Screen Shot

Làm cách nào để làm điều này?

Trả lời

5

Mã Mono cho Android C sau đây thực hiện thủ thuật (nhưng phải dễ dàng chuyển sang Java). Tôi đã thử nghiệm trên Android 2.2 (Galaxy S) và Android 4.1 (Nexus 7). Điều duy nhất bạn cần thay đổi là ID bố cục được sử dụng cho chế độ xem chính và chế độ xem hộp thoại.

[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"); 
    }   
} 

Tôi đã tải lên một mẫu đơn đầy đủ cho Android lên https://github.com/t9mike/CustomDialogFragmentSample.

+0

Cảm ơn. Sau khi chuyển đổi sang java này đã làm các trick cho tôi. Tôi đã phải thay đổi WRAP_CONTENT thành MATCH_PARENT để có được hộp thoại hiển thị toàn màn hình. – speedynomads

+0

Cảm ơn Github đã tải lên – Signcodeindie

23

Mã dưới đây sẽ giúp bạn để hiển thị hộp thoại toàn màn hình và nó cũng thiết lập màu trong suốt

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

đây là Hộp thoại, không phải là DialogFragment, như trong câu hỏi –

Các vấn đề liên quan