0

Ich habe eine AppCompatActivity mit einer ListView, die ich als ein Dialogfeld anzeigen (d. H. Eine Liste fordert den Benutzer ein Foto oder ein Bild aus der Galerie zu wählen).AppCompat Thema verlieren alle blauen Titelstyling

Allerdings heißt es ich muss Theme.AppCompat für den Dialog verwenden. So verwende ich

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

jedoch der resultierende Titel eine schwarze Farbe und keine unterstrichen hat, im Gegensatz zu dem blauen Text/blau unterstreichen, die in Standard-DialogFragments und dergleichen zu zeigen scheinen.

Wie bekomme ich das gleiche Theming zurück zu diesem Dialog Thema?

mit Bildschirm-Schnipsel Editiert:

enter image description here

ich diesen neuen Dialog von einem anderen DialogFragment Aufruf, indem Sie:

Intent intent = new Intent(getActivity(), CameraMenu.class); 
intent.putExtra(TAG_1, stuff_1); 
intent.putExtra(TAG_2, stuff_2); 
startActivityForResult(intent, ACT_TAG); 
+0

einen bestimmten Grund für die Verwendung der Aktivität und die Anzeige als Dialog? Was Sie suchen, können Sie erreichen, indem Sie android.support.v7.app.AlertDialog.Builder verwenden, setitle und [setSingleChoiceItems] bereitstellen (http://developer.android.com/reference/android/app/AlertDialog.Builder. html # setSingleChoiceItems) –

+0

@RajenRaiyarela I Ich bin in einem DialogFragment, bis ich meinem Benutzer die Wahl gebe, ein Bild von der Kamera oder Galerie zu holen, und diese Auswahl wird in Form eines in eine Aktivität eingebetteten ListViews gewährt Damit diese Aktivität als Dialog angezeigt wird, habe ich ein Dialogfeld verwendet. – KaliMa

+0

Ich benutze eine ListView, um die Auswahl anzuzeigen, weil es mir erlaubt, effektiv Symbole für jede Option zu enthalten – KaliMa

Antwort

0

bereits.

einen Dialog erstellen, ohne einen Stil zu geben:

public static void showDialog(Activity activity) { 

     final AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
     View view = LayoutInflater.from(activity).inflate(R.layout.dialog_common, null); 
     builder.setView(view); 

     alert = builder.create(); 
     alert.show(); 

    } 
+0

Ich hätte hinzufügen sollen, dass ich gerade diese Aktivität über eine Absicht beginne. Es ist als eine Aktivität codiert, aber es sieht aus wie ein Dialog wegen des Themas (also anstatt den Bildschirm aufzunehmen, schwebt er über allem in einer kleineren Box) – KaliMa

+0

was genau willst du dann? Möchten Sie das AppCompat-Dialogfeld richtig anzeigen? –

+0

Es erscheint bereits als ein Dialog wegen der Verwendung des Dialog-Themas, es ist nur, dass das Titel-Styling auf Schwarz statt des typischen Blau-mit-Unterstreichung reduziert wurde – KaliMa

0

Hier ist ein Beispielthema für Ihren Dialog, in dem colorAccent für Ihre Tasten verwendet wird, wird textColorPrimary Ihr Titel Farbe und Hintergrund sein ist Ihr Dialog Hintergrund.

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorAccent">#0900FF</item> 
    <item name="android:textColorPrimary">#FFFFFF</item> 
    <item name="android:background">#FF0049</item> 
</style> 

Nun, dieses Thema zu Ihrer Anwendung hinzufügen AppTheme

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- your AlertDialog style --> 
    <item name="alertDialogTheme">@style/AlertDialogStyle</item> 
</style> 

Jetzt Ihren Dialog erstellen. Hier ist aa Ihr ArrayAdapter oder BaseAdapter, was auch immer Sie als Adapter in Ihrem Listview verwendet haben.

import android.support.v7.app.AlertDialog 

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity().this); 
    builder.setTitle("Dialog"); 
    builder.setSingleChoiceItems(aa, 0, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dlg, int which) { 
     //which is index of your item clicked from the list. So take appropriate action. 
    } 
    }) 
builder.show(); 
+0

Aber was ist mit den Intent-Argumenten und dem Setup? Und die Symbole? – KaliMa

+0

Da Sie den gleichen Adapter verwenden werden, den Sie für listview verwendet haben, wird eine Beispielanzeige angezeigt. In Bezug auf Intent können Sie ** welchen ** Wert überprüfen und entsprechende Maßnahmen ergreifen, um die Galerie oder die öffnende Kamera anzuzeigen. Nein, Sie müssen Ihre Aktivität nicht öffnen. Zeigen Sie stattdessen diesen Dialog von Ihrem Dialogfragment an und implementieren Sie Ihren Code. –

+0

Code stürzt für mich ab, heißt es auf der builder.show(); Linie, dass es ein "Fensterleck" gibt – KaliMa