Как использовать разные темы для конкретной страницы в формах Xamarin? - PullRequest
0 голосов
/ 21 мая 2018

У меня есть тема по умолчанию для моего приложения.Я настраиваю эту тему, используя файл стиля в Android.Но я создаю страницу входа, которую я хочу использовать другую тему только для этого.Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Если ваше приложение Xamarin Forms использует только одно действие, то это довольно просто.Это решение для Lollipop и версий после.Вы можете сделать это, используя специфический для платформы код Android:

public class StatusBarStyleManager : IStatusBarStyleManager
{
    public void SetStatusBarColor(Android.Graphics.Color color)
    {
        if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
        {
            Device.BeginInvokeOnMainThread(() =>
            {
                var currentWindow = GetCurrentWindow();
                currentWindow.DecorView.SystemUiVisibility = (StatusBarVisibility)SystemUiFlags.LightStatusBar;
                currentWindow.SetStatusBarColor(color);
            });
        }
    }

    Window GetCurrentWindow()
    {
        //Note this is a nuget package for retrieving the activity.
        var window = CrossCurrentActivity.Current.Activity.Window;

        // clear FLAG_TRANSLUCENT_STATUS flag:
        window.ClearFlags(WindowManagerFlags.TranslucentStatus);

        // add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
        window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);

        return window;
    }
}

Затем просто используйте эту реализацию на своих страницах, чтобы установить их конкретные цвета строки состояния, когда они появляются.

Вдохновленный этой статьей, когда янужно это в моих собственных проектах: https://evgenyzborovsky.com/2018/08/20/dynamically-changing-the-status-bar-appearance-in-xamarin-forms/

0 голосов
/ 21 мая 2018

Я не уверен, что вы можете сделать это, потому что тема Android может быть применена к действию в Android, но Xamarin.Forms запускаются «внутри» одного действия, поэтому вам придется выполнять стилизацию либо в Xamarin.Forms.Прочтите этот пост на форумах Xamarin , где разработчик смог изменить тему во время выполнения, что, однако, перезапустило активность и, в свою очередь, также его приложение Xamarin.Forms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...