Я пытаюсь изменить цвет приложения для Android, которое использует avalonia для пользовательского интерфейса.
Вот мой MainActivity
:
public class MainActivity : AvaloniaMainActivity<App>
{
protected override void OnCreate(Bundle savedInstanceState)
{
View decorView = Window.DecorView;
var uiOptions = decorView.WindowSystemUiVisibility;
var newuioptions = uiOptions;
newuioptions |= SystemUiFlags.LayoutStable | SystemUiFlags.LayoutFullscreen;
decorView.SystemUiFlags = newuioptions;
Window.SetStatusBarColor(Color.Orange);
base.OnCreate(savedInstanceState);
}
protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
{
return base.CustomizeAppBuilder(builder)
.WithInterFont()
.UseReactiveUI();
}
}
Строка состояния остается неизменной, что бы я ни делал. Чего мне не хватает и как изменить строку состояния Android?
@BobSmith, это тоже не работает. Я обнаружил, что в коде нет ничего плохого, потому что когда я расширяю AppCompatActvity вместо AvaloniaMainActivity, он работает хорошо. Должно быть проблема с авалонией
Кажется, существует ограничение на прямую настройку цвета строки состояния с помощью кода в Avalonia.NET для Android. Хотя AppCompatActivity обеспечивает собственный доступ к этим функциям, для Avalonia может потребоваться другой подход.
Кажется, да @BobSmith. Я создам проблему в их репозитории, чтобы мы могли найти решение!
Хорошая идея, опубликуйте здесь ссылку на проблему, отредактировав свой вопрос, чтобы будущие читатели также могли изучить ее и получить помощь на основе ваших выводов.
Нашел исправление. Переопределить OnWindowFocusChanged вместо OnCreate. Вид, создаваемый авалонией, мешал ему.
public override void OnWindowFocusChanged(bool hasFocus)
{
View decorView = Window.DecorView;
var uiOptions = decorView.WindowSystemUiVisibility;
var newuioptions = uiOptions;
newuioptions |= SystemUiFlags.LayoutStable | SystemUiFlags.LayoutFullscreen;
decorView.SystemUiFlags = newuioptions;
Window.SetStatusBarColor(Color.Transparent);
base.OnWindowFocusChanged(hasFocus);
}
Почему бы вам не попробовать установить цвет из
styles.xml
, определив тему и не использовать ее в MainActivity. Вызвав его в функцииOnCreate
, напримерSetTheme(Resource.Style.MyTheme);