5

Đây là cách tôi gọi DialogFragment tôi:loại bỏ nền trắng trong dialogfragment

DialogSelectAccount myDiag=new DialogSelectAccount(); 
myDiag.show(ft,"Diag"); 

Sau đây là cách (một phần) DialogFragment của tôi được tạo ra:

public class DialogSelectAccount extends DialogFragment { 
public DialogSelectAccount() { 

    } 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRetainInstance(true); 
} 

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.dialog_select_account, container, false); 
tvMessage = (TextView) rootView.findViewById(R.id.tvMessage); 
     btnAccountPublic = (Button) rootView.findViewById(R.id.btnAccountPublic); 
     btnAccountEnterprise = (Button) rootView.findViewById(R.id.btnAccountEnterprise); 
     tvMessage.setText(message); 
     btnAccountPublic.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Login.setAccountType = 2; 
       dismiss(); 
      } 
     }); 
     btnAccountEnterprise.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Login.setAccountType = 1; 
       dismiss(); 
      } 
     }); 
     return rootView; 
    } 

và đây là xml cho DialogSelectAccount tôi

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

    <TextView 
     android:id="@+id/tvMessage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_margin="10dp" 
     android:textColor="@android:color/black" 
     android:textSize="15dp" 
     android:textAlignment="center" 
     android:gravity="center_horizontal" 
     android:background="#ff26b4e9" 
     android:autoText="true"> 
    </TextView> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:background="#ff26b4e9" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/btnAccountPublic" 
      android:layout_width="150dp" 
      android:layout_height="wrap_content" 
      android:clickable="true" 
      android:text="@string/accountPub" 
      android:textColor="#ffffffff" 
      android:background = "@drawable/roundedbutton" /> 

     <Button 
      android:id="@+id/btnAccountEnterprise" 
      android:layout_width="150dp" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="5dp" 
      android:clickable="true" 
      android:text="@string/accountEnt" 
      android:textColor="#ffffffff" 
      android:background = "@drawable/roundedbutton" /> 
    </LinearLayout> 

</LinearLayout> 

vấn đề là luôn luôn có một nền trắng bẩm sinh hiển thị, như hình dưới đây. Làm thế nào để loại bỏ nó?

enter image description here

+1

thể trùng lặp của [Làm thế nào để tạo ra một DialogFragment mà không cần danh hiệu?] (Http://stackoverflow.com/questions/15277460/how-to-create-a-dialogfragment-without-title) –

+0

@ imin: bạn có thấy câu trả lời của tôi không? –

+0

@ Y.S. xin lỗi tôi đang gắn liền với một dự án khác bây giờ .. Tôi sẽ trở lại dự án này vào cuối tuần này và cho u câu trả lời của tôi. thanks – imin

Trả lời

13

Trong onCreateView() của DialogFragment của bạn, thay thế

View rootView = inflater.inflate(R.layout.dialog_select_account, container, false); 

với

View rootView = inflater.inflate(R.layout.dialog_select_account, container); 

Ngoài ra, thêm video này vào onViewCreated():

getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); 
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme); 

và trong ngoài cùng LinearLayout của XML, thay đổi

android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

để

android:layout_height="wrap_content" 
android:layout_width="wrap_content" 

Hãy thử điều này. Điều này sẽ làm việc.

+0

Tôi đã đi với giải pháp được cung cấp tại http://stackoverflow.com/questions/15277460/how-to-create-a-dialogfragment-without-title, nhưng kể từ khi tôi kiểm tra & của bạn cũng làm việc, tôi sẽ đánh dấu nó là câu trả lời. – imin

+0

bạn cũng có thể muốn xóa một nửa nền đen trong suốt (mờ), hãy kiểm tra câu trả lời này: http://stackoverflow.com/a/33800422/2115904 –

1

Bạn có thể tạo phong cách cho thoại của bạn:

<style name="DialogStyle" parent="Base.Theme.AppCompat.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
</style> 

Và sử dụng nó trong mã bằng phương pháp:

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    return new Dialog(getActivity(), R.style.DialogStyle); 
} 

Hoặc bạn có thể đặt FEATURE_NO_TITLE cho thoại của bạn chỉ trong bạn mã như được hiển thị trong mã bên dưới:

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Dialog dialog = super.onCreateDialog(savedInstanceState); 
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
    return dialog; 
} 
0

Ở đây tôi nghĩ bạn đang cố giấu thanh tiêu đề. Sử dụng điều này

getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
Các vấn đề liên quan