2015-09-04 21 views
32

Quando si crea un DialogFragment personalizzato, ho impostato il titolo utilizzando il seguente:DialogFragment Android titolo non mostrando

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View v = inflater.inflate(R.layout.fragment_dialog_add, container, false);  

    // Setting title here 
    getDialog().setTitle("Add New"); 

    return v; 
} 

Il codice sopra funziona bene per me a livello di API di età superiore a 23. Per API 23 il titolo non è mostrando affatto.

Qualche idea del perché? e come rendere il titolo mostrato su API 23?

risposta

48

risolto aggiungendo quanto segue al styles.xml:

<item name="android:dialogTheme">@style/CustomDialog</item> 

<style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowNoTitle">false</item> 
</style> 
+2

Grazie! Mi stavo strappando i capelli. Non sono sicuro del motivo per cui windowNoTitle sembra essere impostato su true dopo l'API 23 ma grazie per la correzione! – AdamMc331

+6

Davvero non capisco perché hanno cambiato questo in API23 – Sudara

+1

Usa 'parent =" @ style/Theme.AppCompat.Dialog "' per la finestra di dialogo scura. – Yani2000

38

Nei vostri stili:

<style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowNoTitle">false</item> 
</style> 

Se il dialogo è un frammento:

MyFragment myFragment = new MyFragment(); 
myFragment.setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialog);