2015-06-15 7 views
8

Ich habe versucht, DialoFragment mit AppCompat-Design zu erstellen, aber wenn ich AppCompat-Design verwende, wird der Dialogtitel nicht angezeigt.Android DialogFragment mit AppCompat-Designproblem

Ich bin definiert Stil mit:

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

Wenn Eltern Thema wird geändert zu:

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

oder

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

Titel korrekt angezeigt.

-Code meines Dialog:

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

Irgendwelche Ideen, was das Problem verursacht? Anwendung verwenden com.android.support:appcompat-v7:22.2.0, vielleicht ist dies Plattformfehler?

+0

Haben Sie die richtige Lösung gefunden? – Ewoks

Antwort

0

Soweit ich weiß, sobald Sie onCreateView überschreiben, überschreiben Sie das Standardlayout von dialogFragment. Daher schlage ich vor, dass Sie das gesamte benutzerdefinierte Dialogfeldfragmentlayout erstellen.

Hier ist ein Beispiel XML-Layout.

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

Dies ist ein gefälschter Dialog mit Titel. Einige Elemente fehlen. Wie Zeilentrennung zwischen Titel und Rest des Dialogs. – Ewoks

2

Theme.AppCompat.Light.Dialog legt kein Titelfenster als Standard fest.

versuchen, etwas wie unten:

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