Можно ли сделать строку состояния Android полностью прозрачной с помощью форм Xamarin? - PullRequest
0 голосов
/ 17 марта 2019

Я ищу способ сделать Android StatusBar полностью прозрачным с помощью форм Xamarin. Я могу легко сделать его полупрозрачным, установив android:windowTranslucentStatus в true. Он будет черным с непрозрачностью около 50%, но в любом случае его фон будет виден, а это не то, чего я хочу. Я нашел эту статью, и это именно то, что мне нужно в результате https://learnpainless.com/android/material/make-fully-android-transparent-status-bar но проблема в том, что в формах Xamarin, похоже, нет очевидного способа добиться того же. Я просто не нашел ни способа установить флажки декора, ни способа сделать это в styles.xml enter image description here

Я также видел эту тему (которая была мне предложена во время создания моей) Прозрачная строка состояния Android и панель действий и гуглил эту Фоновое изображение Xamarin Forms с прозрачной строкой состояния и несколько других. Но все эти решения также имеют полупрозрачную строку состояния. Так что я полностью застрял с этим

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Я только что нашел простое решение.Мне просто нужно установить colorPrimaryDark с альфа-компонентом.Я устанавливал альфа-компонент в конце шестнадцатеричного значения (как на Android), но мне нужно было установить его в начале в xamarin.Таким образом, решение выглядит следующим образом:

<item name="colorPrimaryDark">@color/statusTransparent</item>

И сам цвет (в colors.xml) равен

<color name="statusTransparent">#26ff9b76</color>

Где 26 - альфа-компонент HEX.Что означает 15% альфа, но если я изменю его на 00, я получу полностью прозрачную строку состояния, я получу значения здесь Гекс прозрачность в цветах


ПОЗЖЕ

Ну, это не полностью рабочее решение.Даже если строка состояния становится прозрачной, xamarin не рисует свои страницы под этой строкой состояния, виден только фон действия enter image description here

Единственный способ заставить xamarin рисовать его содержимоепод строкой состояния это сделать его полупрозрачным через android:windowTranslucentStatus Но в этом случае это выглядит так: enter image description here

И это не то, что я хочу.Так что вопрос пока открыт

0 голосов
/ 17 марта 2019

Вы можете сделать это в методе OnCreate MainActivity.cs

. Это приведет к удалению строки состояния со всех экранов.

// On Create in the activity
protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);
    this.Window.ClearFlags(WindowManagerFlags.Fullscreen);
    SetContentView (Resource.Layout.YourLayout);
}

, если вы хотите использовать обе платформы, я бы предпочелВы делаете это в коде файла:

public partial class MyPage : ContentPage  
{  
      public MyPage()  
      {  
         InitializeComponent();  
         NavigationPage.SetHasNavigationBar(this, false);  
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...