2017-03-09 35 views
0

我在我的Xamarin MvvmCross项目中使用Acr.UserDialogs插件。 一切都很好,但发现在Android 7.0 Alert对话框中有隐形Ok按钮(在以前的版本中显示正确)。PCL Acr.UserDialogs。自定义样式为android

我发现只有重新定义风格的方式,通过AndroidResourceId属性,创建警报对话框时,但对我来说这个对话框在PCL创建:

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

所以它不适合我硬编码RESOURCEID(它们被重新生成,并且常见的PCL嵌入式资源是一个坏主意)。

我尝试实现我自己的类,派生自UserDialogImpl或AbstractUserDialog,但在解析构造函数中的Activity时存在问题。

我在这样的方式初始化对话框:

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

锯,还有一个动作参数,传递给AlertAsync,但无法找到一个方法来处理它的Android项目。

有没有另一种方法来定制android项目中的userDialog风格?

回答

1

如果你有一个对话的主题...

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

...那么你可以主题在一个对话框中所有再这样下去你的Droid项目:

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; 

如果您想对Droid项目中的对话做出反应,那么您可以使用MvvmCross Messenger插件从PCL项目发送消息。当PCL项目发布消息时,特定于平台的视图可以订阅该消息。

+0

感谢您的回复。我已经忘记了这个问题,只要找到了解决方案。以类似的方式解决,基于强制设置colorAccent在活动中的样式。 – Fragment