2015-06-15 19 views
8

Ho provato a creare DialoFragment con il tema AppCompat, ma quando utilizzo il tema AppCompat, il titolo della finestra di dialogo non viene visualizzato.Android DialogFragment con tema tema AppCompat

I'am con stile definito:

<style name="DialogFragment" parent="Theme.AppCompat.Light.Dialog"/> 

Quando tema genitore verrà modificato in:

<style name="DialogFragment" parent="android:Theme.Material.Light.Dialog"/> 

o

<style name="DialogFragment" parent="android:Theme.Holo.Light.Dialog"/> 

titolo viene visualizzato correttamente.

Codice della mia finestra:

public class InfoDialog extends DialogFragment { 

    public static final String TAG = InfoDialog.class.getName(); 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = super.onCreateDialog(savedInstanceState); 
     dialog.getWindow().setTitle(getString(R.string.dialog_title)); 

     return dialog; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NORMAL, R.style.DialogFragment); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.info_dialog, container, false); 
    } 
} 

Tutte le idee che cosa sta causando il problema? Uso applicazione com.android.support:appcompat-v7:22.2.0, forse questo è un bug della piattaforma?

+0

hai trovato la soluzione corretta? – Ewoks

risposta

0

Per quanto ne so una volta che si esegue l'override suCreateView si sta sovrascrivendo il layout predefinito di dialogFragment. quindi suggerisco di creare l'intero layout del frammento di dialogo personalizzato.

Ecco un esempio di layout xml.

<?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="match_parent" 
       android:background="@drawable/rounded_dialog" 
       android:orientation="vertical" 
       android:padding="@dimen/margin_standard"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:padding="@dimen/margin_standard" 
     > 


     <TextView 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:id="@+id/dialog_error_prompt_title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/lorem" 
      /> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_marginBottom="@dimen/margin_standard" 
     android:layout_marginLeft="@dimen/horizontal_margin" 
     android:layout_marginRight="@dimen/margin_standard" 
     android:layout_marginTop="@dimen/margin_standard" 
     > 
     <TextView 
      android:id="@+id/dialog_error_prompt_description" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/lorem_long" 
      /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:orientation="horizontal" 
     android:weightSum="1" 
     android:padding="@dimen/margin_standard"> 

     <TextView 
      android:visibility="invisible" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_margin="@dimen/margin_standard" 
      android:clickable="true" 
      android:padding="@dimen/margin_standard" 
      android:text="@string/cancel" 
      android:textAppearance="?android:attr/textAppearanceButton" 
      android:layout_weight=".70" 
      android:gravity="center" 
      android:textColor="@color/primary"/> 

     <TextView 
      android:gravity="center" 
      android:layout_weight=".30" 
      android:id="@+id/dialog_error_prompt_positive_button" 
      android:layout_width="wrap_content" 
      android:layout_height="@dimen/standard_button_height" 
      android:layout_margin="@dimen/margin_standard" 
      android:background="@drawable/primary_button_selector_background" 
      android:clickable="true" 
      android:padding="@dimen/margin_standard" 
      android:text="@string/ok"`enter code here` 
      android:textAppearance="?android:attr/textAppearanceButton" 
      android:textColor="@color/background_floating_material_light"/> 
    </LinearLayout> 
</LinearLayout> 
+0

Questo è un finto dialogo con il titolo .. Alcuni elementi sono mancanti .. Come la separazione delle righe tra il titolo e il resto della finestra di dialogo. – Ewoks

2

Theme.AppCompat.Light.Dialog set Nessuna finestra titolo in default.

provare qualcosa di simile di seguito:

<style name="DialogFragment" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowNoTitle">false</item> 
</style> 
Problemi correlati