5

Oto jak zadzwoniłem mój DialogFragment:usunąć białe tło w dialogfragment

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

Oto jak (częściowo) moja DialogFragment tworzony jest:

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; 
    } 

i oto xml dla mojego DialogSelectAccount

<?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> 

Problem polega na tym, że zawsze wyświetlane jest irytujące białe tło, jak pokazano poniżej. Jak mogę go usunąć?

enter image description here

+1

możliwy duplikat [Jak stworzyć DialogFragment bez tytułu?] (Http://stackoverflow.com/questions/15277460/how-to-create-a-dialogfragment-without-title) –

+0

@ imin: widziałeś moją odpowiedź? –

+0

@ Y.S. Przepraszam, jestem teraz związany z innym projektem. Wrócę do tego projektu w ten weekend i udzieli mi odpowiedzi. dzięki – imin

Odpowiedz

13

W onCreateView() twoich DialogFragment wymienić

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

z

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

Również dodać do onViewCreated():

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

iw najdalszym LinearLayout z XML, zmień

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

do

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

Spróbuj tego. To powinno działać.

+0

Poszedłem z rozwiązaniem pod adresem http://stackoverflow.com/questions/15277460/how-to-create-a-dialogfragment-without-title, ale ponieważ testowałem i twoja również działa, oznaczę to jako odpowiedź. – imin

+0

możesz również usunąć pół przezroczyste czarne tło (ściemnianie), sprawdź tę odpowiedź: http://stackoverflow.com/a/33800422/2115904 –

1

Można utworzyć styl dla okna:

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

i używać go w kodzie metodą:

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

Albo można ustawić FEATURE_NO_TITLE tylko dla Twojego dialogowe w swojej kod, jak pokazano w poniższym kodzie:

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

Tutaj myślę, że próbujesz ukryć pasek tytułu. Użyj tej

getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);