5

Вот как я назвал мой DialogFragment:удалить белый фон в dialogfragment

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

Вот как (частично) моя DialogFragment создана:

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

и вот XML для моего 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> 

проблема заключается в том, что всегда отображается нестойкий белый фон, как показано ниже. Как его удалить?

enter image description here

+1

возможный дубликат [Как создать DialogFragment без названия?] (Http://stackoverflow.com/questions/15277460/how-to-create-a-dialogfragment-without-title) –

+0

@ imin: вы видели мой ответ? –

+0

@ Y.S. жаль, что я привязан к другому проекту сейчас. Я вернусь к этому проекту в эти выходные и дам свой ответ. спасибо – imin

ответ

13

В onCreateView() из ваших DialogFragment заменить

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

с

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

Кроме того, добавьте в onViewCreated():

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

и во внешнем LinearLayout в XML, изменение

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

в

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

Попробуйте это. Это должно сработать.

+0

Я пошел с решением, предоставленным по адресу http://stackoverflow.com/questions/15277460/how-to-create-a-dialogfragment-without-title, но так как я тестировал и работаю, я буду отмечать его как ответ. – imin

+0

вы также можете удалить полупрозрачный черный фон (затемнение), проверьте этот ответ: http://stackoverflow.com/a/33800422/2115904 –

1

Вы можете создать стиль для вашего диалога:

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

и использовать его в коде метод:

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

Или вы можете установить FEATURE_NO_TITLE для вашего диалога только в вашем код, как показано в приведенном ниже коде:

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

Здесь я думаю, вы пытаетесь скрыть строку заголовка. Используйте этот

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