4 Stimmen

Benutzerdefiniertes Design für Android DatePicker DialogFragment zeigt unangenehmen Rahmen an

Ich versuche, einen DialogFragment zu verwenden, um einen Datumsauswähler zu hosten, wie von Google hier empfohlen: http://developer.android.com/guide/topics/ui/controls/pickers.html

Die Verwendung des Beispielscodes auf der oben genannten Seite funktioniert gut, aber ich möchte in der Lage sein, ein spezifisches Thema für den Datumsauswähler-Dialog festzulegen.

Wenn ich die OnCreateDialog-Methode im DialogFragment aus ihrem Beispielcode ändere, damit sie einen Datumsauswähler mit einem spezifischen Thema zurückgibt, wie zum Beispiel:

...
// Erstellen Sie eine neue Instanz von DatePickerDialog und geben Sie sie zurück
DatePickerDialog dlg = new DatePickerDialog(getActivity(),
   Android.R.style.Theme_DeviceDefault_Light_Dialog, this, Jahr, Monat, Tag); 
return dlg;
...

(d.h. indem Sie einfach den anderen Konstruktor für DatePickerDialog verwenden, bei dem Sie ein Thema angeben können) Dann erscheint ein hässlicher nicht-transparenter Rahmen um meinen Datumsauswähler, wenn er angezeigt wird:

(Screenshot hier: http://i.stack.imgur.com/WO1YD.png)

Was kann ich tun, um den Rahmen loszuwerden?

3voto

Juan Punkte 876

Dies ist vielleicht etwas alt, aber ich werde hier zumindest antworten, falls andere Leute auf diese Frage stoßen.
Ich glaube, du kannst die Antwort hier finden, in dieser anderen Stack Overflow Frage (wahrscheinlich ein Duplikat, aber ich weiß nicht, wie man es markiert).

Die Antwort ist dort, das Fensterhintergrund so einzustellen:
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

Hoffe, es hilft.

2voto

rack Punkte 21

Ich weiß, es ist bereits ein Jahr her, aber vielleicht braucht jemand anderes eine Lösung für das Problem. Gestern hatte ich dasselbe Problem und habe es mit einem kleinen Workaround gelöst. Ich habe meinen eigenen DatePickerDialog erstellt anstelle des bereitgestellten von Android.

Hier ist der Code:

dialog_date_picker.xml

DialogDatePicker.java

public class DialogDatePicker extends DialogFragment {

private DatePicker dp;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.dialog_date_picker, container);
    dp = (DatePicker) view.findViewById(R.id.dlgDatePicker);
    view.findViewById(R.id.dlgDatePickerBtnDone).setOnClickListener(setDate);
    getDialog().setTitle(R.string.dlg_date_picker_title);
    return view;
}

private View.OnClickListener setDate = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        int dayOfMonth = dp.getDayOfMonth();
        int monthOfYear = dp.getMonth()+1; //0 = jan, 1 = feb, ...
        int year = dp.getYear();

        String date = String.format(Locale.GERMANY,"%s.%s.%s", dayOfMonth, monthOfYear, year);
        ((TextView) getActivity().findViewById(R.id.route_setting_date))
                .setText(date);

        dismiss();
    }
};

}

und schließlich der Aufruf mit dem neuen Theme

DialogDatePicker ddp = new DialogDatePicker();
ddp.setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Holo_Dialog);
ddp.show(getFragmentManager(),"DialogDatePicker");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X