2013-06-24 19 views
5

Ich möchte einige Nachrichten in einem ListPreference-Dialog hinzufügen, also habe ich über das Attribut android: dialogMessage nachgedacht.Anzeige android: dialogMessage in einem ListPreference-Dialog

Wenn ich jedoch dieses Attribut einstelle, werden die Listeneinträge (gesetzt mit android: entries und android: entryValues) im Dialog nicht mehr angezeigt (Es scheint sich um einen bekannten Fehler zu handeln, wie ich anderswo lesen konnte).

So scheint es, dass ich eine spezielle benutzerdefinierte ListPreference machen muss, um sowohl die DialogMessage als auch die Listeneinträge anzuzeigen.

Ich denke über das Erstellen einer benutzerdefinierten Klasse MyListPreference, die für diesen Zweck leicht geändert werden würde. Ich würde onCreateDialogView() überschreiben, um die Änderungen vorzunehmen. Aber ich bin ein wenig unsicher über die saubersten Änderungen zu machen, wie ich zwei Alternativen sehen:

Alternative 1- Erstellen Sie eine benutzerdefinierte XML-Layout ich die Standard-XML-Layout für die ListPreference Dialog kopieren würde und ein Textview hinzufügen . In OnCreateDialogView() würde ich dieses benutzerdefinierte Layout aufblasen.

Alternative 2- Ändern Sie den Blick auf die Fliege In onCreateDialogView() Ich würde super.onCreateDialogView() aufrufen und dynamisch eine Textview auf die es zurückgibt Blick hinzuzufügen.

Frage: Was empfehlen Sie zu tun? Wenn Alternative 1 die beste ist, wo finde ich das Standard-XML-Layout für den ListPreference-Dialog, damit ich ihn anpassen kann?

Vielen Dank für Ihre Hilfe

Antwort

1

I 2 Alternative # zuerst versuchen würde. Ich entwickle gerade einen riesigen Einstellungsbildschirm mit ungefähr 50 Einstellungen und fand heraus, dass das Ändern der Ansicht in onCreateView() einer Voreinstellung ziemlich einfach ist.

@Override 
protected View onCreateView(ViewGroup parent) { 
    View v = super.onCreateView(parent); 
    ((TextView) v).setText(this.text); 
    return v; 
} 

Ich wette, es ist das gleiche mit dem Dialog einer ListPreference.