2017-03-09 3 views
0

Ich verwende Acr.UserDialogs Plugin in meinem Xamarin MvvmCross Projekt. Und alles war in Ordnung, fand aber, dass auf Android 7.0 Benachrichtigungs Dialogen unsichtbar Ok-Taste hat (in früheren Versionen ist es korrekt angezeigt).PCL Acr.UserDialogs. Custom-Styling für android

Ich fand nur die Art und Weise Stil neu zu definieren, durch AndroidResourceId Eigenschaft, wenn Alert-Dialog zu schaffen, aber in meinem Fall diese Dialoge in PCL erstellt werden:

await userDialogs.AlertAsync(new AlertConfig { Message = message }); 

es ist also nicht geeignet für mich resourceId zu codieren (Sie werden neu generiert, und häufige PCL-eingebettete Ressourcen sind eine schlechte Idee.

tryed ich meine eigene Klasse zu implementieren, von UserDialogImpl abgeleitet oder AbstractUserDialog, aber es gibt ein Problem Aktivität im Konstruktor mit der Lösung.

ich initialisieren Dialoge in einer solchen Art und Weise:

UserDialogs.Init(() => Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity); 
userDialogs = Mvx.Resolve<IUserDialogs>(); 

Säge, gibt es auch ein Aktionsparameter, zu AlertAsync vergangen, aber kann nicht einen Weg zu handhaben es in Android-Projekt.

Gibt es eine andere Art und Weise einen Stil für userDialog in Android-Projekt anpassen?

Antwort

1

Wenn Sie ein Dialog Thema haben ...

<style name="YourDialogThemeHere" parent="Theme.AppCompat.DayNight.Dialog"> 
    <item name="colorAccent">@color/accent</item> 
</style> 

... dann können Sie Thema alle der Dialoge in einem Rutsch, wie dies in Ihrem Droid Projekt:

var dialogStyle = Resource.Style.YourDialogThemeHere; 
    AlertConfig.DefaultAndroidStyleId = dialogStyle; 
    PromptConfig.DefaultAndroidStyleId = dialogStyle; 
    ConfirmConfig.DefaultAndroidStyleId = dialogStyle; 
    ActionSheetConfig.DefaultAndroidStyleId = dialogStyle; 
    DatePromptConfig.DefaultAndroidStyleId = dialogStyle; 
    TimePromptConfig.DefaultAndroidStyleId = dialogStyle; 
    LoginConfig.DefaultAndroidStyleId = dialogStyle; 

wenn Sie in den Dialog im Droid Projekt reagieren wollen, dann können Sie eine Nachricht aus dem PCL-Projekt senden, um die MvvmCross Messenger-Plugin. Die plattformspezifische Ansicht kann die Nachricht abonnieren, während das PCL-Projekt die Nachricht veröffentlicht.

+0

Danke für Ihre Antwort. Ich habe diese Frage schon vergessen, sobald ich eine Lösung gefunden habe. Auf ähnliche Weise gelöst, basierend auf der erzwungenen Einstellung eines Stils mit colorAccent in Aktivität. – Fragment